From 78636b784e8ee1c5627035ccd00bd86b10f4362e Mon Sep 17 00:00:00 2001 From: andrei Date: Thu, 28 Aug 2025 09:36:08 +0200 Subject: [PATCH 001/149] reafctor: remove evaluation folder with unused classes --- .../evaluation/logger/FileLogger.php | 27 ------------------- .../headstart/evaluation/logger/Logger.php | 14 ---------- 2 files changed, 41 deletions(-) delete mode 100644 server/classes/headstart/evaluation/logger/FileLogger.php delete mode 100644 server/classes/headstart/evaluation/logger/Logger.php diff --git a/server/classes/headstart/evaluation/logger/FileLogger.php b/server/classes/headstart/evaluation/logger/FileLogger.php deleted file mode 100644 index 39de74443..000000000 --- a/server/classes/headstart/evaluation/logger/FileLogger.php +++ /dev/null @@ -1,27 +0,0 @@ -log = \KLogger::instance($log_directory, $level); - } - - public function writeToLog($log_data) { - $log_line = json_encode($log_data); - $this->log->logInfo($log_line); - } - -} diff --git a/server/classes/headstart/evaluation/logger/Logger.php b/server/classes/headstart/evaluation/logger/Logger.php deleted file mode 100644 index d2c97c89b..000000000 --- a/server/classes/headstart/evaluation/logger/Logger.php +++ /dev/null @@ -1,14 +0,0 @@ - Date: Mon, 1 Sep 2025 13:45:42 +0200 Subject: [PATCH 002/149] refactor: types for the HoverPopover component --- local_dev/searchflow-container/Dockerfile | 2 +- vis/js/templates/HoverPopover.tsx | 23 +++++++++++++++++------ 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/local_dev/searchflow-container/Dockerfile b/local_dev/searchflow-container/Dockerfile index b5df97e18..24e640f6a 100644 --- a/local_dev/searchflow-container/Dockerfile +++ b/local_dev/searchflow-container/Dockerfile @@ -1,4 +1,4 @@ -FROM php:8.2-apache +FROM php:8.2-apache-bookworm LABEL maintainer="Chris Kittel " diff --git a/vis/js/templates/HoverPopover.tsx b/vis/js/templates/HoverPopover.tsx index 964d312a6..af12f83a1 100644 --- a/vis/js/templates/HoverPopover.tsx +++ b/vis/js/templates/HoverPopover.tsx @@ -1,19 +1,30 @@ -// @ts-nocheck - -import React from "react"; +import React, { FC, ReactNode } from "react"; import { OverlayTrigger, Popover } from "react-bootstrap"; -const HoverPopover = ({ +interface HoverPopoverProps { + id: string; + content: string | ReactNode; + children: ReactNode; + container: ReactNode; + size?: "wide"; + placement?: "bottom"; +} + +const HoverPopover: FC = ({ id, size, content, children, - container, // = null + container, placement = "bottom", }) => { const popover = ( - + {content} ); From 8d098175c3e79f49232d2f75ffae9fd8107dc58b Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 1 Sep 2025 14:20:37 +0200 Subject: [PATCH 003/149] refactor: types for the Author component --- vis/js/@types/author.ts | 62 ++++++- vis/js/components/ContextLine.tsx | 183 ++++++++++---------- vis/js/components/Employment.tsx | 34 ++-- vis/js/templates/contextfeatures/Author.tsx | 49 +++--- 4 files changed, 187 insertions(+), 141 deletions(-) diff --git a/vis/js/@types/author.ts b/vis/js/@types/author.ts index e74188842..ea174626c 100644 --- a/vis/js/@types/author.ts +++ b/vis/js/@types/author.ts @@ -1,6 +1,58 @@ +interface Websites { + url: string; + "url-name": string; +} + +interface ResearcherURL { + id: string; + url: string; + url_name: string; +} + +interface Employment { + department: unknown; + end_date: string; + id: string; + organization: string; + organization_address: string; + role: string; + start_date: string; +} + +interface Education { + department: string; + end_date: string; + id: string; + organization: string; + organization_address: string; + role: string; + start_date: string; + url: string; +} + export interface Author { - employment?: { - role?: string - organization?: string - } -} \ No newline at end of file + author_keywords: string; + author_name: string; + biography: string; + external_identifiers: unknown; + researcher_urls: ResearcherURL[]; + orcid_id: string; + total_citations: number; + total_neppr: number; + total_unique_social_media_mentions: number; + websites: Websites[]; + h_index: number; + academic_age: number; + normalized_h_index: number; + employment: Employment; + employments: Employment[]; + funds: unknown[]; + educations: Education[]; + memberships: unknown[]; + distinctions: unknown[]; + services: unknown[]; + enable_teaching_mentorship: boolean; + total_supervised_bachelor_students: number; + total_supervised_master_students: number; + total_supervised_phd_students: number; +} diff --git a/vis/js/components/ContextLine.tsx b/vis/js/components/ContextLine.tsx index 15f873923..e59be4a11 100644 --- a/vis/js/components/ContextLine.tsx +++ b/vis/js/components/ContextLine.tsx @@ -3,7 +3,7 @@ import React from "react"; import { connect } from "react-redux"; import ContextLineTemplate from "../templates/ContextLine"; -import Author from "../templates/contextfeatures/Author"; +import { Author } from "../templates/contextfeatures/Author"; import DocumentTypes from "../templates/contextfeatures/DocumentTypes"; import NumArticles from "../templates/contextfeatures/NumArticles"; import DataSource from "../templates/contextfeatures/DataSource"; @@ -33,106 +33,103 @@ const defined = (param) => param !== undefined && param !== null; * It has to be a class component because of the popovers (they use 'this'). */ export const ContextLine = (props) => { - const { author, params, localization, hidden, service, showDataSource } = props; - const { popoverContainer, showLanguage } = props; + const { author, params, localization, hidden, service, showDataSource } = + props; + const { popoverContainer, showLanguage } = props; - const { isResearcherDetailsEnabled, isResearcherMetricsEnabled } = props; + const { isResearcherDetailsEnabled, isResearcherMetricsEnabled } = props; - if (hidden) { - return null; - } + if (hidden) { + return null; + } - return ( - - {params.showAuthor && ( - - )} - - - - - {showDataSource && defined(params.dataSource) && ( - + {params.showAuthor && ( + + )} + + + + + {showDataSource && defined(params.dataSource) && ( + + )} + {defined(params.timespan) && ( + + - )} - {defined(params.timespan) && ( - - - - )} - {defined(params.documentTypes) && + )} + {defined(params.documentTypes) && ( + } - {/* was an issue to left "All Languages" as default value in the context if no lang_id in parameters */} - {showLanguage && ( - - )} - {defined(params.paperCount) && ( - - )} - {defined(params.datasetCount) && ( - - )} - {defined(params.funder) && {params.funder}} - {defined(params.projectRuntime) && ( - {params.projectRuntime} - )} - {defined(params.legacySearchLanguage) && ( - {params.legacySearchLanguage} - )} - {defined(params.timestamp) && ( - - )} - + )} + {/* was an issue to left "All Languages" as default value in the context if no lang_id in parameters */} + {showLanguage && ( + - {defined(params.searchLanguage) && ( - {params.searchLanguage} - )} - {isResearcherDetailsEnabled && ( - - )} - {isResearcherMetricsEnabled && ( - - )} - - - ); -} + )} + {defined(params.paperCount) && ( + + )} + {defined(params.datasetCount) && ( + + )} + {defined(params.funder) && {params.funder}} + {defined(params.projectRuntime) && ( + {params.projectRuntime} + )} + {defined(params.legacySearchLanguage) && ( + {params.legacySearchLanguage} + )} + {defined(params.timestamp) && ( + + )} + + {defined(params.searchLanguage) && ( + {params.searchLanguage} + )} + {isResearcherDetailsEnabled && } + {isResearcherMetricsEnabled && } + + + ); +}; const mapStateToProps = (state) => ({ isResearcherDetailsEnabled: state.contextLine.isResearcherDetailsEnabled, diff --git a/vis/js/components/Employment.tsx b/vis/js/components/Employment.tsx index 1684263e2..c60711418 100644 --- a/vis/js/components/Employment.tsx +++ b/vis/js/components/Employment.tsx @@ -6,22 +6,24 @@ import { shorten } from "../utils/string"; const MAX_ROLE_LENGTH = 18; export interface EmploymentProps { - author: Author, - popoverContainer: HTMLElement + author: Author; + popoverContainer: HTMLElement; } export function Employment({ author, popoverContainer }: EmploymentProps) { const authorRoleId = "author-role"; const authorOrganizationId = "author-organization"; - - const role = author?.employment?.role || ''; + const role = author?.employment?.role || ""; const shortenedRole = shorten(role, MAX_ROLE_LENGTH); - const authorRoleHasOverflow = shortenedRole && shortenedRole !== author?.employment?.role; - - const organization = author?.employment?.organization || ''; + const authorRoleHasOverflow = + shortenedRole && shortenedRole !== author?.employment?.role; + + const organization = author?.employment?.organization || ""; const shortenedOrganization = shorten(organization, MAX_ROLE_LENGTH); - const authorOrganizationHasOverflow = shortenedOrganization && shortenedOrganization !== author?.employment?.organization; + const authorOrganizationHasOverflow = + shortenedOrganization && + shortenedOrganization !== author?.employment?.organization; return ( <> @@ -35,15 +37,15 @@ export function Employment({ author, popoverContainer }: EmploymentProps) { content={role} > {shortenedRole} ) : ( - + {shortenedRole} )} @@ -60,15 +62,15 @@ export function Employment({ author, popoverContainer }: EmploymentProps) { content={organization} > {shortenedOrganization} ) : ( - + {shortenedOrganization} )} diff --git a/vis/js/templates/contextfeatures/Author.tsx b/vis/js/templates/contextfeatures/Author.tsx index 859ce3250..17c0c913b 100644 --- a/vis/js/templates/contextfeatures/Author.tsx +++ b/vis/js/templates/contextfeatures/Author.tsx @@ -1,29 +1,24 @@ -import React from "react"; +import React, { FC, memo } from "react"; -const Author = ({ bioLabel, livingDates, link }:{ - bioLabel: string; - livingDates: string; - link: string; -}) => { - return ( - // html template starts here - <> - {livingDates ? ( - - {livingDates} - - ) : null} - - {bioLabel ? ( - - - {bioLabel} - - - ) : null} - - // html template ends here - ); -}; +interface AuthorProps { + bioLabel?: string; + livingDates?: string; +} -export default Author; +export const Author: FC = memo(({ bioLabel, livingDates }) => ( + <> + {livingDates ? ( + + {livingDates} + + ) : null} + + {bioLabel ? ( + + + {bioLabel} + + + ) : null} + +)); From 6e33dd7617e497c2691fc7c743ef8865168ec82b Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 1 Sep 2025 14:29:40 +0200 Subject: [PATCH 004/149] refactor: types for the ContextLineTemplate component --- vis/js/components/ContextLine.tsx | 2 +- vis/js/templates/ContextLine.tsx | 24 +++++++++++------------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/vis/js/components/ContextLine.tsx b/vis/js/components/ContextLine.tsx index e59be4a11..e4433adee 100644 --- a/vis/js/components/ContextLine.tsx +++ b/vis/js/components/ContextLine.tsx @@ -2,7 +2,7 @@ import React from "react"; import { connect } from "react-redux"; -import ContextLineTemplate from "../templates/ContextLine"; +import { ContextLineTemplate } from "../templates/ContextLine"; import { Author } from "../templates/contextfeatures/Author"; import DocumentTypes from "../templates/contextfeatures/DocumentTypes"; import NumArticles from "../templates/contextfeatures/NumArticles"; diff --git a/vis/js/templates/ContextLine.tsx b/vis/js/templates/ContextLine.tsx index 15aedd746..9e1ea1361 100644 --- a/vis/js/templates/ContextLine.tsx +++ b/vis/js/templates/ContextLine.tsx @@ -1,15 +1,13 @@ -import React from "react"; +import React, { FC, ReactNode } from "react"; -// inside the 'children' variable are various React components -// from directory ./contextfeatures -const ContextLine = ({ children }: { - children: React.ReactNode; -}) => { - return ( - // html template starts here -

{children}

- // html template ends here - ); -}; +interface ContextLineTemplateProps { + children: ReactNode; +} -export default ContextLine; +export const ContextLineTemplate: FC = ({ + children, +}) => ( +

+ {children} +

+); From 3f9c034dc950a1bbf80ae672a88c65c5eac03be1 Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 1 Sep 2025 16:25:25 +0200 Subject: [PATCH 005/149] refactor: types for the NumArticles component --- vis/js/components/ContextLine.tsx | 2 +- .../templates/contextfeatures/NumArticles.tsx | 40 +++++++++++-------- 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/vis/js/components/ContextLine.tsx b/vis/js/components/ContextLine.tsx index e4433adee..4ca2f0819 100644 --- a/vis/js/components/ContextLine.tsx +++ b/vis/js/components/ContextLine.tsx @@ -5,7 +5,7 @@ import { connect } from "react-redux"; import { ContextLineTemplate } from "../templates/ContextLine"; import { Author } from "../templates/contextfeatures/Author"; import DocumentTypes from "../templates/contextfeatures/DocumentTypes"; -import NumArticles from "../templates/contextfeatures/NumArticles"; +import { NumArticles } from "../templates/contextfeatures/NumArticles"; import DataSource from "../templates/contextfeatures/DataSource"; import Timespan from "../templates/contextfeatures/Timespan"; import PaperCount from "../templates/contextfeatures/PaperCount"; diff --git a/vis/js/templates/contextfeatures/NumArticles.tsx b/vis/js/templates/contextfeatures/NumArticles.tsx index ce42475c9..06bc39f6d 100644 --- a/vis/js/templates/contextfeatures/NumArticles.tsx +++ b/vis/js/templates/contextfeatures/NumArticles.tsx @@ -1,33 +1,37 @@ -// @ts-nocheck +import React, { FC, ReactNode } from "react"; -import React from "react"; - -type NumArticlesProps = { +interface NumArticlesProps { articlesCount: number; articlesCountLabel: string; - openAccessArticlesCount?: number; + openAccessArticlesCount: number | null; service: string; - children: string; + children: ReactNode; modifierLimit: number; isStreamgraph?: boolean; -}; +} -const NumArticles = ({ +export const NumArticles: FC = ({ articlesCount, articlesCountLabel, - openAccessArticlesCount = null, + openAccessArticlesCount, service, children, modifierLimit, - isStreamgraph -}: NumArticlesProps) => { - let displayText = `${articlesCount} ${articlesCountLabel}`; + isStreamgraph, +}) => { + let displayText: + | ReactNode + | string = `${articlesCount} ${articlesCountLabel}`; if (service === "orcid") { if (articlesCount >= modifierLimit) { - displayText = <>{modifierLimit} {children} works; + displayText = ( + <> + {modifierLimit} {children} works + + ); } else { - displayText = <>{articlesCount} works + displayText = <>{articlesCount} works; } } @@ -39,7 +43,11 @@ const NumArticles = ({ ); } else { - displayText = <>{articlesCount} {children} {articlesCountLabel} + displayText = ( + <> + {articlesCount} {children} {articlesCountLabel} + + ); } } @@ -52,5 +60,3 @@ const NumArticles = ({
); }; - -export default NumArticles; From be6b91d51e8001b4a504eea0f326e206fba97a6e Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 1 Sep 2025 16:34:27 +0200 Subject: [PATCH 006/149] refactor: types for the Modifier component --- vis/js/templates/contextfeatures/Modifier.tsx | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/vis/js/templates/contextfeatures/Modifier.tsx b/vis/js/templates/contextfeatures/Modifier.tsx index 47d73bd44..f35f003d1 100644 --- a/vis/js/templates/contextfeatures/Modifier.tsx +++ b/vis/js/templates/contextfeatures/Modifier.tsx @@ -1,25 +1,29 @@ -// @ts-nocheck - -import React from "react"; +import React, { FC, ReactNode } from "react"; import { connect } from "react-redux"; - import { useLocalizationContext } from "../../components/LocalizationProvider"; import { STREAMGRAPH_MODE } from "../../reducers/chartType"; import useMatomo from "../../utils/useMatomo"; - import HoverPopover from "../HoverPopover"; -const Modifier = ({ popoverContainer, modifier, isStreamgraph }) => { +interface ModifierProps { + popoverContainer: ReactNode; + modifier: "most-relevant" | "most-recent"; + isStreamgraph: boolean; +} + +const Modifier: FC = ({ + popoverContainer, + modifier, + isStreamgraph, +}) => { const localization = useLocalizationContext(); const { trackEvent } = useMatomo(); if (modifier === "most-recent") { return ( - <> - - {localization.most_recent_label} - - + + {localization.most_recent_label} + ); } @@ -49,7 +53,7 @@ const Modifier = ({ popoverContainer, modifier, isStreamgraph }) => { return null; }; -const mapStateToProps = (state) => ({ +const mapStateToProps = (state: any) => ({ modifier: state.contextLine.modifier, isStreamgraph: state.chartType === STREAMGRAPH_MODE, }); From c613cca91284cdecbde6720fc82980a142eda35c Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 1 Sep 2025 17:44:01 +0200 Subject: [PATCH 007/149] refactor: types for the Employment component --- vis/js/components/Employment.tsx | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/vis/js/components/Employment.tsx b/vis/js/components/Employment.tsx index c60711418..c214341ee 100644 --- a/vis/js/components/Employment.tsx +++ b/vis/js/components/Employment.tsx @@ -1,16 +1,16 @@ -import React, { useEffect, useRef, useState } from "react"; +import React, { ReactNode } from "react"; import HoverPopover from "../templates/HoverPopover"; import { Author } from "../@types/author"; import { shorten } from "../utils/string"; const MAX_ROLE_LENGTH = 18; -export interface EmploymentProps { +interface EmploymentProps { author: Author; - popoverContainer: HTMLElement; + popoverContainer: ReactNode; } -export function Employment({ author, popoverContainer }: EmploymentProps) { +export const Employment = ({ author, popoverContainer }: EmploymentProps) => { const authorRoleId = "author-role"; const authorOrganizationId = "author-organization"; @@ -30,7 +30,6 @@ export function Employment({ author, popoverContainer }: EmploymentProps) { {author?.employment?.role ? ( {authorRoleHasOverflow ? ( - // @ts-ignore {authorOrganizationHasOverflow ? ( - // @ts-ignore ); -} +}; From 1224120e995a9a275ce71f05e82bf9fdc1692763 Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 1 Sep 2025 17:45:45 +0200 Subject: [PATCH 008/149] refactor: types for the DataSource component --- vis/js/templates/contextfeatures/DataSource.tsx | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/vis/js/templates/contextfeatures/DataSource.tsx b/vis/js/templates/contextfeatures/DataSource.tsx index e4081646e..2867fd14c 100644 --- a/vis/js/templates/contextfeatures/DataSource.tsx +++ b/vis/js/templates/contextfeatures/DataSource.tsx @@ -1,18 +1,22 @@ -// @ts-nocheck -import React from "react"; +import React, { FC, ReactNode } from "react"; import { shorten } from "../../utils/string"; import HoverPopover from "../HoverPopover"; const MAX_CONTENT_PROVIDER_LENGTH = 6; -type DataSourceProps = { +interface DataSourceProps { label: string; source: string; contentProvider: string; - popoverContainer: HTMLElement; -}; + popoverContainer: ReactNode; +} -const DataSource = ({ label, source, contentProvider, popoverContainer }: DataSourceProps) => { +const DataSource: FC = ({ + label, + source, + contentProvider, + popoverContainer, +}) => { if (contentProvider) { const content = shorten(contentProvider, MAX_CONTENT_PROVIDER_LENGTH); From 9c94eed376216f1914dd27feacc15d5b19bbd688 Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 1 Sep 2025 17:48:00 +0200 Subject: [PATCH 009/149] refactor: types for the TimespanProps component --- vis/js/templates/contextfeatures/Timespan.tsx | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/vis/js/templates/contextfeatures/Timespan.tsx b/vis/js/templates/contextfeatures/Timespan.tsx index 2e2d52989..7beed61ca 100644 --- a/vis/js/templates/contextfeatures/Timespan.tsx +++ b/vis/js/templates/contextfeatures/Timespan.tsx @@ -1,15 +1,13 @@ -import React from "react"; +import React, { FC, ReactNode } from "react"; -const Timespan = ({ children }: { - children: React.ReactNode; -}) => { - return ( - // html template starts here - - {children} - - // html template ends here - ); -}; +interface TimespanProps { + children: ReactNode; +} + +const Timespan: FC = ({ children }) => ( + + {children} + +); export default Timespan; From 66cd488037eb92bb184230d2f83439a75135a971 Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 1 Sep 2025 17:52:42 +0200 Subject: [PATCH 010/149] refactor: types for the ContextTimeFrame component --- vis/js/components/ContextLine.tsx | 2 +- .../contextfeatures/ContextTimeFrame.tsx | 55 +++++++++++-------- 2 files changed, 32 insertions(+), 25 deletions(-) diff --git a/vis/js/components/ContextLine.tsx b/vis/js/components/ContextLine.tsx index 4ca2f0819..b2fc44e6a 100644 --- a/vis/js/components/ContextLine.tsx +++ b/vis/js/components/ContextLine.tsx @@ -74,7 +74,7 @@ export const ContextLine = (props) => { )} diff --git a/vis/js/templates/contextfeatures/ContextTimeFrame.tsx b/vis/js/templates/contextfeatures/ContextTimeFrame.tsx index 22a4b0982..0db49acef 100644 --- a/vis/js/templates/contextfeatures/ContextTimeFrame.tsx +++ b/vis/js/templates/contextfeatures/ContextTimeFrame.tsx @@ -1,42 +1,49 @@ -// @ts-nocheck -import React from "react"; +import React, { FC, ReactNode } from "react"; import { connect } from "react-redux"; - import { useLocalizationContext } from "../../components/LocalizationProvider"; import { STREAMGRAPH_MODE } from "../../reducers/chartType"; import useMatomo from "../../utils/useMatomo"; - import HoverPopover from "../HoverPopover"; - - -const ContextTimeFrame = ({timespan, popoverContainer, isStreamgraph}) => { +interface ContextTimeFrameProps { + time: string; + popoverContainer: ReactNode; + isStreamgraph: boolean; +} + +const ContextTimeFrame: FC = ({ + time, + popoverContainer, + isStreamgraph, +}) => { const localization = useLocalizationContext(); - const {trackEvent} = useMatomo(); + const { trackEvent } = useMatomo(); const trackMouseEnter = () => - trackEvent("Title & Context line", "Hover time frame", "Context line"); + trackEvent("Title & Context line", "Hover time frame", "Context line"); return ( - <> - {isStreamgraph - ? - - - {timespan} - - {" "} + <> + {isStreamgraph ? ( + + + + {time} - : timespan} - + {" "} + + ) : ( + time + )} + ); - }; -const mapStateToProps = (state) => ({ +const mapStateToProps = (state: any) => ({ isStreamgraph: state.chartType === STREAMGRAPH_MODE, }); From cd7f9546ea7714be3fdc2fcf2132a28be043c4b8 Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 1 Sep 2025 17:54:32 +0200 Subject: [PATCH 011/149] refactor: types for the DocumentTypes component --- .../contextfeatures/DocumentTypes.tsx | 36 ++++++++++++------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/vis/js/templates/contextfeatures/DocumentTypes.tsx b/vis/js/templates/contextfeatures/DocumentTypes.tsx index 0f622ac04..e54092379 100644 --- a/vis/js/templates/contextfeatures/DocumentTypes.tsx +++ b/vis/js/templates/contextfeatures/DocumentTypes.tsx @@ -1,12 +1,22 @@ -// @ts-nocheck - -import React from "react"; - +import React, { FC, ReactNode } from "react"; import HoverPopover from "../HoverPopover"; import { useLocalizationContext } from "../../components/LocalizationProvider"; import useMatomo from "../../utils/useMatomo"; -const DocumentTypes = ({ documentTypes, popoverContainer }) => { +interface DocumentTypesProps { + documentTypes: string[]; + popoverContainer: ReactNode; +} + +const DocumentTypes: FC = ({ + documentTypes, + popoverContainer, +}) => { + console.log("DocumentTypes props:", { + documentTypes, + popoverContainer, + }); + const loc = useLocalizationContext(); const { trackEvent } = useMatomo(); @@ -31,19 +41,19 @@ const DocumentTypes = ({ documentTypes, popoverContainer }) => { size="wide" container={popoverContainer} content={ - <> - {loc.documenttypes_tooltip} -
-
- {text} - + <> + {loc.documenttypes_tooltip} +
+
+ {text} + } > {loc.documenttypes_label}
- {/* this empty space was on web interface in context line */} - {/*{" "}*/} + {/* this empty space was on web interface in context line */} + {/*{" "}*/} ); }; From d0fcc2a2e0286c1c71c59d0668cdc330f2f4e0b8 Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 1 Sep 2025 17:56:41 +0200 Subject: [PATCH 012/149] refactor: types for the DocumentLang component --- .../contextfeatures/DocumentLang.tsx | 175 ++++++++++-------- .../contextfeatures/DocumentTypes.tsx | 5 - 2 files changed, 93 insertions(+), 87 deletions(-) diff --git a/vis/js/templates/contextfeatures/DocumentLang.tsx b/vis/js/templates/contextfeatures/DocumentLang.tsx index b260c14da..93431ac75 100644 --- a/vis/js/templates/contextfeatures/DocumentLang.tsx +++ b/vis/js/templates/contextfeatures/DocumentLang.tsx @@ -1,103 +1,114 @@ -// @ts-nocheck - -import React from "react"; -import {LangOptions} from "../../lang/lang_options.js"; +import React, { FC, ReactNode } from "react"; +import { LangOptions } from "../../lang/lang_options.js"; import useMatomo from "../../utils/useMatomo"; import HoverPopover from "../HoverPopover"; +interface DocumentLangProps { + value: string[]; + popoverContainer: ReactNode; +} -const DocumentLang = ({value, popoverContainer}) => { - - const {trackEvent} = useMatomo(); - - // was an issue to left "All Languages" as default value in the context if no lang_id in parameters - value = value || 'all-lang' // Default value for value parameter +const DocumentLang: FC = ({ value, popoverContainer }) => { + const { trackEvent } = useMatomo(); - // popover messages - const allLangMessage = "All languages were taken into consideration in the creation of this visualisation. Please note " + - "that not all of them may appear in the visualisation. "; - const multLangMessage = "The following languages were taken into consideration in the creation of this visualisation. " + - "Please note that not all of them may appear in the visualisation: "; + // was an issue to left "All Languages" as default value in the context if no lang_id in parameters + value = value || "all-lang"; // Default value for value parameter + // popover messages + const allLangMessage = + "All languages were taken into consideration in the creation of this visualisation. Please note " + + "that not all of them may appear in the visualisation. "; + const multLangMessage = + "The following languages were taken into consideration in the creation of this visualisation. " + + "Please note that not all of them may appear in the visualisation: "; - let lang = '' - let lang_list = null - let popoverText = '' + let lang = ""; + let lang_list = null; + let popoverText = ""; - // exists 2 types: string and object in lang_id parameter - if (typeof value === 'string') { - const selectedLangOption = LangOptions.find(langOption => langOption.id === value); - lang = selectedLangOption ? selectedLangOption.label : ''; - popoverText = (value === 'all-lang') ? allLangMessage : (lang.length > 10 && selectedLangOption?.label) || ''; - if (lang.length > 10 && value !== 'all-lang') { - lang = cutString(lang, 10); - } + // exists 2 types: string and object in lang_id parameter + if (typeof value === "string") { + const selectedLangOption = LangOptions.find( + (langOption) => langOption.id === value + ); + lang = selectedLangOption ? selectedLangOption.label : ""; + popoverText = + value === "all-lang" + ? allLangMessage + : (lang.length > 10 && selectedLangOption?.label) || ""; + if (lang.length > 10 && value !== "all-lang") { + lang = cutString(lang, 10); } + } - if (Array.isArray(value)) { - if (value.length === 1 && value[0] === 'all-lang') { - popoverText = allLangMessage; - lang = LangOptions.filter((item) => item.id === value[0] && item)[0].label - } else if (value.length === 1) { - lang = LangOptions.filter((item) => item.id === value[0] && item)[0].label - popoverText = lang.length > 10 ? lang : ''; - if (lang.length > 10 && value[0] !== 'all-lang') { - lang = cutString(lang, 10); - } - } else { - lang = "Languages"; - lang_list = value - .map(langId => LangOptions.find(langOption => langOption.id === langId)?.label) - .join(', '); - popoverText = multLangMessage; - } + if (Array.isArray(value)) { + if (value.length === 1 && value[0] === "all-lang") { + popoverText = allLangMessage; + lang = LangOptions.filter((item) => item.id === value[0] && item)[0] + .label; + } else if (value.length === 1) { + lang = LangOptions.filter((item) => item.id === value[0] && item)[0] + .label; + popoverText = lang.length > 10 ? lang : ""; + if (lang.length > 10 && value[0] !== "all-lang") { + lang = cutString(lang, 10); + } + } else { + lang = "Languages"; + lang_list = value + .map( + (langId) => + LangOptions.find((langOption) => langOption.id === langId)?.label + ) + .join(", "); + popoverText = multLangMessage; } + } - const trackMouseEnter = () => - trackEvent("Title & Context line", "Hover languages", "Context line"); - - return ( - <> - {popoverText - // if multiple languages were selected, then show popover - ? - - {popoverText} - {lang_list ? -
{lang_list}
- : null - } - - } - > - {lang} -
-
+ const trackMouseEnter = () => + trackEvent("Title & Context line", "Hover languages", "Context line"); - // if only one language with label length < 10 was selected, show it without popover - : - {lang} - + return ( + <> + {popoverText ? ( + // if multiple languages were selected, then show popover + + + {popoverText} + {lang_list ? ( +
{lang_list}
+ ) : null} + } - - ); + > + {lang} +
+
+ ) : ( + // if only one language with label length < 10 was selected, show it without popover + + {lang} + + )} + + ); }; export default DocumentLang; // cutString function for shortening long language names export function cutString(str: string, length: number) { - if (str.length > length) { - return str.substring(0, length) + '...'; - } - return str; + if (str.length > length) { + return str.substring(0, length) + "..."; + } + return str; } diff --git a/vis/js/templates/contextfeatures/DocumentTypes.tsx b/vis/js/templates/contextfeatures/DocumentTypes.tsx index e54092379..6e8946c45 100644 --- a/vis/js/templates/contextfeatures/DocumentTypes.tsx +++ b/vis/js/templates/contextfeatures/DocumentTypes.tsx @@ -12,11 +12,6 @@ const DocumentTypes: FC = ({ documentTypes, popoverContainer, }) => { - console.log("DocumentTypes props:", { - documentTypes, - popoverContainer, - }); - const loc = useLocalizationContext(); const { trackEvent } = useMatomo(); From c699620dd11e1b8238c7f9c99c2ce24a47a85d72 Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 1 Sep 2025 17:58:22 +0200 Subject: [PATCH 013/149] refactor: types for the PaperCount component --- .../templates/contextfeatures/PaperCount.tsx | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/vis/js/templates/contextfeatures/PaperCount.tsx b/vis/js/templates/contextfeatures/PaperCount.tsx index e901661f8..dcb9608f0 100644 --- a/vis/js/templates/contextfeatures/PaperCount.tsx +++ b/vis/js/templates/contextfeatures/PaperCount.tsx @@ -1,16 +1,14 @@ -import React from "react"; +import React, { FC } from "react"; -const PaperCount = ({ value, label }: { +interface PaperCountProps { value: number; label: string; -}) => { - return ( - // html template starts here - - {value} {label} - - // html template ends here - ); -}; +} + +const PaperCount: FC = ({ value, label }) => ( + + {value} {label} + +); export default PaperCount; From 3c2e381cd76bd215c29309f02ef78bb65f205ad4 Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 1 Sep 2025 17:59:14 +0200 Subject: [PATCH 014/149] refactor: types for the DatasetCount component --- .../contextfeatures/DatasetCount.tsx | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/vis/js/templates/contextfeatures/DatasetCount.tsx b/vis/js/templates/contextfeatures/DatasetCount.tsx index 9acb1fb77..c5394a2ca 100644 --- a/vis/js/templates/contextfeatures/DatasetCount.tsx +++ b/vis/js/templates/contextfeatures/DatasetCount.tsx @@ -1,16 +1,14 @@ -import React from "react"; +import React, { FC } from "react"; -const DatasetCount = ({ value, label }: { +interface DatasetCountProps { value: string; label: string; -}) => { - return ( - // html template starts here - - {value} {label} - - // html template ends here - ); -}; +} + +const DatasetCount: FC = ({ value, label }) => ( + + {value} {label} + +); export default DatasetCount; From 009f7972b4c945ebaf55229d7da6d10c4da7f82a Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 1 Sep 2025 18:00:18 +0200 Subject: [PATCH 015/149] refactor: types for the Funder component --- vis/js/templates/contextfeatures/Funder.tsx | 22 ++++++++++----------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/vis/js/templates/contextfeatures/Funder.tsx b/vis/js/templates/contextfeatures/Funder.tsx index d3ede6864..107db70b9 100644 --- a/vis/js/templates/contextfeatures/Funder.tsx +++ b/vis/js/templates/contextfeatures/Funder.tsx @@ -1,15 +1,13 @@ -import React from "react"; +import React, { FC, ReactNode } from "react"; -const Funder = ({ children }: { - children: React.ReactNode; -}) => { - return ( - // html template starts here - - Funder: {children} - - // html template ends here - ); -}; +interface FunderProps { + children: ReactNode; +} + +const Funder: FC = ({ children }) => ( + + Funder: {children} + +); export default Funder; From a9b30a2bc6c5991565e1e686866663c2ca4959d4 Mon Sep 17 00:00:00 2001 From: andrei Date: Wed, 3 Sep 2025 17:43:42 +0200 Subject: [PATCH 016/149] feat: add --platform linux/amd64 --- server/workers/build_docker_images.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/workers/build_docker_images.sh b/server/workers/build_docker_images.sh index 71a2855d0..1bbd231ce 100755 --- a/server/workers/build_docker_images.sh +++ b/server/workers/build_docker_images.sh @@ -9,7 +9,7 @@ for service in ${services[@]}; do echo "" echo "Building $service" echo "" - docker build -f "$SCRIPT_DIR/../workers/$service/Dockerfile" -t "$service:$service_version" "$SCRIPT_DIR/../" + docker build --platform linux/amd64 -f "$SCRIPT_DIR/../workers/$service/Dockerfile" -t "$service:$service_version" "$SCRIPT_DIR/../" done echo "" From 78ecd6cc2e0857ad872eab475e397119c4376520 Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 8 Sep 2025 13:37:27 +0200 Subject: [PATCH 017/149] refactor: types for the Employment component --- vis/js/components/Employment.tsx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/vis/js/components/Employment.tsx b/vis/js/components/Employment.tsx index c214341ee..8c9433b70 100644 --- a/vis/js/components/Employment.tsx +++ b/vis/js/components/Employment.tsx @@ -1,4 +1,4 @@ -import React, { ReactNode } from "react"; +import React, { FC, ReactNode } from "react"; import HoverPopover from "../templates/HoverPopover"; import { Author } from "../@types/author"; import { shorten } from "../utils/string"; @@ -10,7 +10,10 @@ interface EmploymentProps { popoverContainer: ReactNode; } -export const Employment = ({ author, popoverContainer }: EmploymentProps) => { +export const Employment: FC = ({ + author, + popoverContainer, +}) => { const authorRoleId = "author-role"; const authorOrganizationId = "author-organization"; From 6b17e787c221cb04e91bee91087eafc630618142 Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 8 Sep 2025 13:39:24 +0200 Subject: [PATCH 018/149] refactor: typs for the ProjectRuntime component --- .../contextfeatures/ProjectRuntime.tsx | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/vis/js/templates/contextfeatures/ProjectRuntime.tsx b/vis/js/templates/contextfeatures/ProjectRuntime.tsx index 486be52f3..4a3ec242a 100644 --- a/vis/js/templates/contextfeatures/ProjectRuntime.tsx +++ b/vis/js/templates/contextfeatures/ProjectRuntime.tsx @@ -1,15 +1,13 @@ -import React from "react"; +import React, { FC, ReactNode } from "react"; -const ProjectRuntime = ({ children }: { - children: React.ReactNode; -}) => { - return ( - // html template starts here - - {children} - - // html template ends here - ); -}; +interface ProjectRuntimeProps { + children: ReactNode; +} + +const ProjectRuntime: FC = ({ children }) => ( + + {children} + +); export default ProjectRuntime; From 02d616c91eef670571f0aea64fc999c668f5b746 Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 8 Sep 2025 13:41:12 +0200 Subject: [PATCH 019/149] refactor: typs for the LegacySearchLang component --- .../contextfeatures/LegacySearchLang.tsx | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/vis/js/templates/contextfeatures/LegacySearchLang.tsx b/vis/js/templates/contextfeatures/LegacySearchLang.tsx index 102b25a21..491ca5039 100644 --- a/vis/js/templates/contextfeatures/LegacySearchLang.tsx +++ b/vis/js/templates/contextfeatures/LegacySearchLang.tsx @@ -1,15 +1,13 @@ -import React from "react"; +import React, { FC, PropsWithChildren, ReactNode } from "react"; -const LegacySearchLang = ({ children }: { - children: React.ReactNode; -}) => { - return ( - // html template starts here - - {children} - - // html template ends here - ); -}; +interface LegacySearchLangProps { + children: ReactNode; +} + +const LegacySearchLang: FC = ({ children }) => ( + + {children} + +); export default LegacySearchLang; From 74f348296121cbd3c77733e2df19bb7d4a9a243c Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 8 Sep 2025 13:43:03 +0200 Subject: [PATCH 020/149] refactor: types for the Timestamp component --- .../templates/contextfeatures/Timestamp.tsx | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/vis/js/templates/contextfeatures/Timestamp.tsx b/vis/js/templates/contextfeatures/Timestamp.tsx index 7f9b2757e..8a3fa752b 100644 --- a/vis/js/templates/contextfeatures/Timestamp.tsx +++ b/vis/js/templates/contextfeatures/Timestamp.tsx @@ -1,16 +1,14 @@ -import React from "react"; +import React, { FC } from "react"; -const Timestamp = ({ value, label }: { +interface TimestampProps { value: string; label: string; -}) => { - return ( - // html template starts here - - {label}: {value} - - // html template ends here - ); -}; +} + +const Timestamp: FC = ({ value, label }) => ( + + {label}: {value} + +); export default Timestamp; From 9a2d0fdfc3d1be01e9a4a60346765fe71145b8d0 Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 8 Sep 2025 13:58:10 +0200 Subject: [PATCH 021/149] refactor: types for the MetadataQuality component --- .../contextfeatures/MetadataQuality.tsx | 29 +++++++++++++++---- 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/vis/js/templates/contextfeatures/MetadataQuality.tsx b/vis/js/templates/contextfeatures/MetadataQuality.tsx index b56f12b6d..d1fe5302a 100644 --- a/vis/js/templates/contextfeatures/MetadataQuality.tsx +++ b/vis/js/templates/contextfeatures/MetadataQuality.tsx @@ -1,12 +1,21 @@ -// @ts-nocheck - -import React from "react"; +import React, { FC, ReactNode } from "react"; import HoverPopover from "../HoverPopover"; import { useLocalizationContext } from "../../components/LocalizationProvider"; import useMatomo from "../../utils/useMatomo"; +import { Localization } from "../../i18n/localization"; + +interface MetadataQualityProps { + popoverContainer: ReactNode; + service: "base" | "pubmed"; + quality: "high" | "low"; +} -const MetadataQuality = ({ quality, popoverContainer, service }) => { +const MetadataQuality: FC = ({ + quality, + popoverContainer, + service, +}) => { const loc = useLocalizationContext(); const { trackEvent } = useMatomo(); @@ -17,6 +26,14 @@ const MetadataQuality = ({ quality, popoverContainer, service }) => { const trackMouseEnter = () => trackEvent("Title & Context line", "Hover data quality", "Context line"); + const descriptionKey: keyof Localization = `${quality}_metadata_quality_desc_${service}`; + const qualityKey: keyof Localization = `${quality}_metadata_quality`; + + if (!(descriptionKey in loc) || !(qualityKey in loc)) { + console.error("Missing localization keys:", descriptionKey, qualityKey); + return null; + } + return ( { - {loc[[quality + "_metadata_quality"]]} + {loc[qualityKey]} From e20a93f5bd03025af9cddfbbf36e249b285cd172 Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 8 Sep 2025 14:02:52 +0200 Subject: [PATCH 022/149] refactor: types for the SearchLang component --- vis/js/components/ContextLine.tsx | 2 +- vis/js/templates/contextfeatures/SearchLang.tsx | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/vis/js/components/ContextLine.tsx b/vis/js/components/ContextLine.tsx index b2fc44e6a..ac75e359e 100644 --- a/vis/js/components/ContextLine.tsx +++ b/vis/js/components/ContextLine.tsx @@ -122,7 +122,7 @@ export const ContextLine = (props) => { popoverContainer={popoverContainer} /> {defined(params.searchLanguage) && ( - {params.searchLanguage} + )} {isResearcherDetailsEnabled && } {isResearcherMetricsEnabled && } diff --git a/vis/js/templates/contextfeatures/SearchLang.tsx b/vis/js/templates/contextfeatures/SearchLang.tsx index 50b18ec32..d7cd8a302 100644 --- a/vis/js/templates/contextfeatures/SearchLang.tsx +++ b/vis/js/templates/contextfeatures/SearchLang.tsx @@ -1,21 +1,22 @@ -// @ts-nocheck -import React from "react"; +import React, { FC } from "react"; import ISO6391 from "iso-639-1"; import { useLocalizationContext } from "../../components/LocalizationProvider"; -const SearchLang = ({ children: langCode }) => { - const localization = useLocalizationContext(); +interface SearchLangProps { + languageCode: string; +} + +const SearchLang: FC = ({ languageCode }) => { + const loc = useLocalizationContext(); const lang = - langCode === "all" ? localization.lang_all : ISO6391.getName(langCode); + languageCode === "all" ? loc.lang_all : ISO6391.getName(languageCode); return ( - // html template starts here {lang} - // html template ends here ); }; From 961452697f9fd2679a84b08f70dd2bcdb8784e35 Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 8 Sep 2025 14:05:30 +0200 Subject: [PATCH 023/149] refactor: types for the ResearcherInfo component --- .../templates/contextfeatures/ResearcherInfo.tsx | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/vis/js/templates/contextfeatures/ResearcherInfo.tsx b/vis/js/templates/contextfeatures/ResearcherInfo.tsx index f07d50e6d..56162aa8d 100644 --- a/vis/js/templates/contextfeatures/ResearcherInfo.tsx +++ b/vis/js/templates/contextfeatures/ResearcherInfo.tsx @@ -1,15 +1,15 @@ -// @ts-nocheck - -import React from "react"; +import React, { FC } from "react"; import { connect } from "react-redux"; import useMatomo from "../../utils/useMatomo"; import { useLocalizationContext } from "../../components/LocalizationProvider"; import { openResearcherModal } from "../../actions"; -const ResearcherInfo = ({ onClick }: { +interface ResearcherInfoProps { onClick: () => void; -}) => { +} + +const ResearcherInfo: FC = ({ onClick }) => { const loc = useLocalizationContext(); const { trackEvent } = useMatomo(); @@ -24,7 +24,6 @@ const ResearcherInfo = ({ onClick }: { }; return ( - // html template starts here {loc.researcher_details_label}
- - // html template ends here ); }; -const mapDispatchToProps = (dispatch) => ({ +const mapDispatchToProps = (dispatch: any) => ({ onClick: () => dispatch(openResearcherModal()), }); From 0966fdd8e75d923e7ad8072e041bc253c9f39b78 Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 8 Sep 2025 14:06:20 +0200 Subject: [PATCH 024/149] types for the ResearcherMetricsInfo component --- .../contextfeatures/ResearcherMetricsInfo.tsx | 21 +++++++------------ 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/vis/js/templates/contextfeatures/ResearcherMetricsInfo.tsx b/vis/js/templates/contextfeatures/ResearcherMetricsInfo.tsx index 3d1b5a644..00734158d 100644 --- a/vis/js/templates/contextfeatures/ResearcherMetricsInfo.tsx +++ b/vis/js/templates/contextfeatures/ResearcherMetricsInfo.tsx @@ -1,13 +1,15 @@ -// @ts-nocheck - -import React from "react"; +import React, { FC } from "react"; import { connect } from "react-redux"; import useMatomo from "../../utils/useMatomo"; import { useLocalizationContext } from "../../components/LocalizationProvider"; import { openResearcherMetricsModal } from "../../actions"; -const ResearcherMetricsInfo = ({ onClick }) => { +interface ResearcherMetricsInfoProps { + onClick: () => void; +} + +const ResearcherMetricsInfo: FC = ({ onClick }) => { const loc = useLocalizationContext(); const { trackEvent } = useMatomo(); @@ -22,22 +24,15 @@ const ResearcherMetricsInfo = ({ onClick }) => { }; return ( - // html template starts here - + {loc.metrics_label} - - // html template ends here ); }; -const mapDispatchToProps = (dispatch) => ({ +const mapDispatchToProps = (dispatch: any) => ({ onClick: () => dispatch(openResearcherMetricsModal()), }); From a22f3d7050d710cfc9df2ddbe827eb2b7a5974ce Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 8 Sep 2025 14:31:22 +0200 Subject: [PATCH 025/149] refactor: types for the ContextLine component --- vis/js/components/ContextLine.tsx | 81 ++++++++++++++----- .../templates/contextfeatures/DataSource.tsx | 2 +- .../templates/contextfeatures/Timestamp.tsx | 11 ++- vis/js/utils/isDefined.ts | 3 + 4 files changed, 71 insertions(+), 26 deletions(-) create mode 100644 vis/js/utils/isDefined.ts diff --git a/vis/js/components/ContextLine.tsx b/vis/js/components/ContextLine.tsx index ac75e359e..b63b11784 100644 --- a/vis/js/components/ContextLine.tsx +++ b/vis/js/components/ContextLine.tsx @@ -1,7 +1,6 @@ -// @ts-nocheck -import React from "react"; +import React, { ReactNode } from "react"; import { connect } from "react-redux"; - +import { isDefined } from "../utils/isDefined"; import { ContextLineTemplate } from "../templates/ContextLine"; import { Author } from "../templates/contextfeatures/Author"; import DocumentTypes from "../templates/contextfeatures/DocumentTypes"; @@ -24,15 +23,60 @@ import ResearcherMetricsInfo from "../templates/contextfeatures/ResearcherMetric import { Employment } from "./Employment"; import ResearcherInfo from "../templates/contextfeatures/ResearcherInfo"; import { STREAMGRAPH_MODE } from "../reducers/chartType"; +import { Author as AuthorType } from "../@types/author"; +import { Localization } from "../i18n/localization"; -const defined = (param) => param !== undefined && param !== null; +interface ContextLineProps { + author: AuthorType; + params: { + showLanguage: boolean; + show_h_index: boolean; + show: boolean; + articlesCount: number; + modifier: string; + modifierLimit: number; + openAccessCount: number; + showDataSource: boolean; + showAuthor: boolean; + author: { + id?: string; + livingDates?: string; + imageLink?: string; + }; + documentTypes: string[]; + dataSource: string; + paperCount: null | number; + datasetCount: null | string; + funder: null | string; + projectRuntime: null | string; + legacySearchLanguage: null | string; + searchLanguage: null | string; + timestamp: null | string; + metadataQuality: "high" | "low"; + documentLang: string[]; + excludeDateFilters: null | string[]; + service: string; + timespan: string; + contentProvider?: string; + isStreamgraph: false; + }; + dispatch: any; + hidden: boolean; + isResearcherDetailsEnabled?: boolean; + isResearcherMetricsEnabled?: boolean; + localization: Localization; + popoverContainer: ReactNode; + service: "base" | "pubmed"; + showDataSource: boolean; + showLanguage: boolean; +} /** * Component that creates the heading contextline. * * It has to be a class component because of the popovers (they use 'this'). */ -export const ContextLine = (props) => { +export const ContextLine = (props: ContextLineProps) => { const { author, params, localization, hidden, service, showDataSource } = props; const { popoverContainer, showLanguage } = props; @@ -62,7 +106,7 @@ export const ContextLine = (props) => { - {showDataSource && defined(params.dataSource) && ( + {showDataSource && isDefined(params.dataSource) && ( { popoverContainer={props.popoverContainer} /> )} - {defined(params.timespan) && ( + {isDefined(params.timespan) && ( { /> )} - {defined(params.documentTypes) && ( + {isDefined(params.documentTypes) && ( { popoverContainer={popoverContainer} /> )} - {defined(params.paperCount) && ( + {isDefined(params.paperCount) && ( )} - {defined(params.datasetCount) && ( + {isDefined(params.datasetCount) && ( )} - {defined(params.funder) && {params.funder}} - {defined(params.projectRuntime) && ( + {isDefined(params.funder) && {params.funder}} + {isDefined(params.projectRuntime) && ( {params.projectRuntime} )} - {defined(params.legacySearchLanguage) && ( + {isDefined(params.legacySearchLanguage) && ( {params.legacySearchLanguage} )} - {defined(params.timestamp) && ( - - )} + {isDefined(params.timestamp) && } - {defined(params.searchLanguage) && ( + {isDefined(params.searchLanguage) && ( )} {isResearcherDetailsEnabled && } @@ -131,7 +170,7 @@ export const ContextLine = (props) => { ); }; -const mapStateToProps = (state) => ({ +const mapStateToProps = (state: any) => ({ isResearcherDetailsEnabled: state.contextLine.isResearcherDetailsEnabled, isResearcherMetricsEnabled: state.contextLine.isResearcherMetricsEnabled, showLanguage: state.contextLine.showLanguage, diff --git a/vis/js/templates/contextfeatures/DataSource.tsx b/vis/js/templates/contextfeatures/DataSource.tsx index 2867fd14c..205aba25b 100644 --- a/vis/js/templates/contextfeatures/DataSource.tsx +++ b/vis/js/templates/contextfeatures/DataSource.tsx @@ -7,7 +7,7 @@ const MAX_CONTENT_PROVIDER_LENGTH = 6; interface DataSourceProps { label: string; source: string; - contentProvider: string; + contentProvider?: string; popoverContainer: ReactNode; } diff --git a/vis/js/templates/contextfeatures/Timestamp.tsx b/vis/js/templates/contextfeatures/Timestamp.tsx index 8a3fa752b..d0748d1d5 100644 --- a/vis/js/templates/contextfeatures/Timestamp.tsx +++ b/vis/js/templates/contextfeatures/Timestamp.tsx @@ -2,12 +2,15 @@ import React, { FC } from "react"; interface TimestampProps { value: string; - label: string; } -const Timestamp: FC = ({ value, label }) => ( - - {label}: {value} +const Timestamp: FC = ({ value }) => ( + + {value} ); diff --git a/vis/js/utils/isDefined.ts b/vis/js/utils/isDefined.ts new file mode 100644 index 000000000..9ca439116 --- /dev/null +++ b/vis/js/utils/isDefined.ts @@ -0,0 +1,3 @@ +export const isDefined = (value: T | undefined | null): value is T => { + return value !== undefined && value !== null; +}; From 50d0d2189e7b21f20fc5b50780f3050f527c697f Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 8 Sep 2025 14:33:35 +0200 Subject: [PATCH 026/149] refactor: group props object destructions --- vis/js/components/ContextLine.tsx | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/vis/js/components/ContextLine.tsx b/vis/js/components/ContextLine.tsx index b63b11784..c41874098 100644 --- a/vis/js/components/ContextLine.tsx +++ b/vis/js/components/ContextLine.tsx @@ -77,11 +77,17 @@ interface ContextLineProps { * It has to be a class component because of the popovers (they use 'this'). */ export const ContextLine = (props: ContextLineProps) => { - const { author, params, localization, hidden, service, showDataSource } = - props; const { popoverContainer, showLanguage } = props; - - const { isResearcherDetailsEnabled, isResearcherMetricsEnabled } = props; + const { + author, + params, + localization, + hidden, + service, + showDataSource, + isResearcherDetailsEnabled, + isResearcherMetricsEnabled, + } = props; if (hidden) { return null; From f03048e1e23b00c87695b9a2ac2f8720fa5bde3c Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 8 Sep 2025 15:03:55 +0200 Subject: [PATCH 027/149] refactor: props with children as separate type --- vis/js/@types/common-components-props.ts | 5 +++++ vis/js/components/ContextLine.tsx | 2 +- vis/js/templates/contextfeatures/Funder.tsx | 9 +++------ .../contextfeatures/LegacySearchLang.tsx | 9 +++------ vis/js/templates/contextfeatures/NumArticles.tsx | 4 ++-- .../templates/contextfeatures/ProjectRuntime.tsx | 9 +++------ vis/js/templates/contextfeatures/Timespan.tsx | 9 +++------ vis/js/templates/contextfeatures/Timestamp.tsx | 15 ++++----------- 8 files changed, 24 insertions(+), 38 deletions(-) create mode 100644 vis/js/@types/common-components-props.ts diff --git a/vis/js/@types/common-components-props.ts b/vis/js/@types/common-components-props.ts new file mode 100644 index 000000000..533b182e1 --- /dev/null +++ b/vis/js/@types/common-components-props.ts @@ -0,0 +1,5 @@ +import { ReactNode } from "react"; + +export interface PropsWithChildren { + children: ReactNode; +} diff --git a/vis/js/components/ContextLine.tsx b/vis/js/components/ContextLine.tsx index c41874098..44bef1ff8 100644 --- a/vis/js/components/ContextLine.tsx +++ b/vis/js/components/ContextLine.tsx @@ -160,7 +160,7 @@ export const ContextLine = (props: ContextLineProps) => { {isDefined(params.legacySearchLanguage) && ( {params.legacySearchLanguage} )} - {isDefined(params.timestamp) && } + {isDefined(params.timestamp) && {params.timestamp}} = ({ children }) => ( +const Funder: FC = ({ children }) => ( Funder: {children} diff --git a/vis/js/templates/contextfeatures/LegacySearchLang.tsx b/vis/js/templates/contextfeatures/LegacySearchLang.tsx index 491ca5039..d50822f8f 100644 --- a/vis/js/templates/contextfeatures/LegacySearchLang.tsx +++ b/vis/js/templates/contextfeatures/LegacySearchLang.tsx @@ -1,10 +1,7 @@ -import React, { FC, PropsWithChildren, ReactNode } from "react"; +import React, { FC } from "react"; +import { PropsWithChildren } from "../../@types/common-components-props"; -interface LegacySearchLangProps { - children: ReactNode; -} - -const LegacySearchLang: FC = ({ children }) => ( +const LegacySearchLang: FC = ({ children }) => ( {children} diff --git a/vis/js/templates/contextfeatures/NumArticles.tsx b/vis/js/templates/contextfeatures/NumArticles.tsx index 06bc39f6d..4754cc996 100644 --- a/vis/js/templates/contextfeatures/NumArticles.tsx +++ b/vis/js/templates/contextfeatures/NumArticles.tsx @@ -1,11 +1,11 @@ import React, { FC, ReactNode } from "react"; +import { PropsWithChildren } from "../../@types/common-components-props"; -interface NumArticlesProps { +interface NumArticlesProps extends PropsWithChildren { articlesCount: number; articlesCountLabel: string; openAccessArticlesCount: number | null; service: string; - children: ReactNode; modifierLimit: number; isStreamgraph?: boolean; } diff --git a/vis/js/templates/contextfeatures/ProjectRuntime.tsx b/vis/js/templates/contextfeatures/ProjectRuntime.tsx index 4a3ec242a..0ad4e54e3 100644 --- a/vis/js/templates/contextfeatures/ProjectRuntime.tsx +++ b/vis/js/templates/contextfeatures/ProjectRuntime.tsx @@ -1,10 +1,7 @@ -import React, { FC, ReactNode } from "react"; +import React, { FC } from "react"; +import { PropsWithChildren } from "../../@types/common-components-props"; -interface ProjectRuntimeProps { - children: ReactNode; -} - -const ProjectRuntime: FC = ({ children }) => ( +const ProjectRuntime: FC = ({ children }) => ( {children} diff --git a/vis/js/templates/contextfeatures/Timespan.tsx b/vis/js/templates/contextfeatures/Timespan.tsx index 7beed61ca..13098154c 100644 --- a/vis/js/templates/contextfeatures/Timespan.tsx +++ b/vis/js/templates/contextfeatures/Timespan.tsx @@ -1,10 +1,7 @@ -import React, { FC, ReactNode } from "react"; +import React, { FC } from "react"; +import { PropsWithChildren } from "../../@types/common-components-props"; -interface TimespanProps { - children: ReactNode; -} - -const Timespan: FC = ({ children }) => ( +const Timespan: FC = ({ children }) => ( {children} diff --git a/vis/js/templates/contextfeatures/Timestamp.tsx b/vis/js/templates/contextfeatures/Timestamp.tsx index d0748d1d5..6f5421960 100644 --- a/vis/js/templates/contextfeatures/Timestamp.tsx +++ b/vis/js/templates/contextfeatures/Timestamp.tsx @@ -1,16 +1,9 @@ import React, { FC } from "react"; +import { PropsWithChildren } from "../../@types/common-components-props"; -interface TimestampProps { - value: string; -} - -const Timestamp: FC = ({ value }) => ( - - {value} +const Timestamp: FC = ({ children }) => ( + + {children} ); From ec9076d876f48d139f8e333a23b28623e842b3c4 Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 8 Sep 2025 15:05:03 +0200 Subject: [PATCH 028/149] refactor: types for the MoreInfoLink component --- vis/js/templates/contextfeatures/MoreInfoLink.tsx | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/vis/js/templates/contextfeatures/MoreInfoLink.tsx b/vis/js/templates/contextfeatures/MoreInfoLink.tsx index fe5a4d18c..59cb47a4a 100644 --- a/vis/js/templates/contextfeatures/MoreInfoLink.tsx +++ b/vis/js/templates/contextfeatures/MoreInfoLink.tsx @@ -1,15 +1,15 @@ -// @ts-nocheck - -import React from "react"; +import React, { FC } from "react"; import { connect } from "react-redux"; import useMatomo from "../../utils/useMatomo"; import { useLocalizationContext } from "../../components/LocalizationProvider"; import { openInfoModal } from "../../actions"; -const MoreInfoLink = ({ onClick }: { +interface MoreInfoLinkProps { onClick: () => void; -}) => { +} + +const MoreInfoLink: FC = ({ onClick }) => { const loc = useLocalizationContext(); const { trackEvent } = useMatomo(); @@ -24,7 +24,6 @@ const MoreInfoLink = ({ onClick }: { }; return ( - // html template starts here {loc.intro_label} - - // html template ends here ); }; -const mapDispatchToProps = (dispatch) => ({ +const mapDispatchToProps = (dispatch: any) => ({ onClick: () => dispatch(openInfoModal()), }); From e68817682ec082335ca4a8d02e6fb1aa3cda6df0 Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 8 Sep 2025 15:05:43 +0200 Subject: [PATCH 029/149] refactor: usage of the PropsWithChildren type in the ContextLineTemplate --- vis/js/templates/ContextLine.tsx | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/vis/js/templates/ContextLine.tsx b/vis/js/templates/ContextLine.tsx index 9e1ea1361..7361d2d9c 100644 --- a/vis/js/templates/ContextLine.tsx +++ b/vis/js/templates/ContextLine.tsx @@ -1,12 +1,7 @@ -import React, { FC, ReactNode } from "react"; +import React, { FC } from "react"; +import { PropsWithChildren } from "../@types/common-components-props"; -interface ContextLineTemplateProps { - children: ReactNode; -} - -export const ContextLineTemplate: FC = ({ - children, -}) => ( +export const ContextLineTemplate: FC = ({ children }) => (

{children}

From 4d375fd0b70c8d9ad6fa5910557b6fd65be4906f Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 8 Sep 2025 15:10:30 +0200 Subject: [PATCH 030/149] refactor: types for the TitleContext component --- vis/js/components/TitleContext.tsx | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/vis/js/components/TitleContext.tsx b/vis/js/components/TitleContext.tsx index e3a805892..5efaff9d3 100644 --- a/vis/js/components/TitleContext.tsx +++ b/vis/js/components/TitleContext.tsx @@ -1,32 +1,38 @@ -// @ts-nocheck - import React from "react"; import { connect } from "react-redux"; import SubdisciplineTitle from "../templates/SubdisciplineTitle"; import AuthorImage from "../templates/AuthorImage"; +import { ServiceType } from "../@types/service"; interface TitleContextProps { showAuthor: boolean; authorImage: string; orcidId: string; - service: string; + service: ServiceType; } -const TitleContext = ({ showAuthor, authorImage, orcidId, service }: TitleContextProps) => { +const TitleContext = ({ + showAuthor, + authorImage, + orcidId, + service, +}: TitleContextProps) => { return (
- {showAuthor && } + {showAuthor && ( + + )}
); }; -const mapStateToProps = (state) => ({ +const mapStateToProps = (state: any) => ({ showAuthor: state.contextLine.showAuthor, authorImage: state.contextLine.author.imageLink, orcidId: state.author.orcid_id, - service: state.contextLine.service + service: state.contextLine.service, }); export default connect(mapStateToProps)(TitleContext); From 6f8563cd8e9bc425ce93c2e3e5b09a7ee4c7343a Mon Sep 17 00:00:00 2001 From: andrei Date: Tue, 9 Sep 2025 10:51:02 +0200 Subject: [PATCH 031/149] refactor: types for the AuthorImage component --- vis/js/@types/type-declarations/images.d.ts | 4 ++++ vis/js/templates/AuthorImage.tsx | 14 ++++++-------- 2 files changed, 10 insertions(+), 8 deletions(-) create mode 100644 vis/js/@types/type-declarations/images.d.ts diff --git a/vis/js/@types/type-declarations/images.d.ts b/vis/js/@types/type-declarations/images.d.ts new file mode 100644 index 000000000..0357e4f19 --- /dev/null +++ b/vis/js/@types/type-declarations/images.d.ts @@ -0,0 +1,4 @@ +declare module "*.png"; +declare module "*.svg"; +declare module "*.jpeg"; +declare module "*.jpg"; diff --git a/vis/js/templates/AuthorImage.tsx b/vis/js/templates/AuthorImage.tsx index 14d5fa0ef..33fac768e 100644 --- a/vis/js/templates/AuthorImage.tsx +++ b/vis/js/templates/AuthorImage.tsx @@ -1,18 +1,16 @@ -import React from "react"; - -// @ts-ignore +import React, { FC } from "react"; import defaultImage from "../../images/author_default.png"; import { ServiceType } from "../@types/service"; export interface AuthorImageProps { - service: ServiceType; - url: string; orcidId: string; + service: ServiceType; + url?: string; } -const AuthorImage = ({ service, url = "", orcidId }: AuthorImageProps) => { +const AuthorImage: FC = ({ service, orcidId, url = "" }) => { let link = defaultImage; - + if (url) { link = url; } @@ -20,7 +18,7 @@ const AuthorImage = ({ service, url = "", orcidId }: AuthorImageProps) => { let href = ""; if (service === ServiceType.ORCID) { - href = `https://orcid.org/${orcidId}` + href = `https://orcid.org/${orcidId}`; } else { href = link; } From e9d59218c0e6f7a2cceae9faaa13a544a42c42d9 Mon Sep 17 00:00:00 2001 From: andrei Date: Tue, 9 Sep 2025 15:23:06 +0200 Subject: [PATCH 032/149] feat: tests for the isDefined function --- vis/test/utils/isDefined.test.ts | 61 ++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 vis/test/utils/isDefined.test.ts diff --git a/vis/test/utils/isDefined.test.ts b/vis/test/utils/isDefined.test.ts new file mode 100644 index 000000000..708ddb10a --- /dev/null +++ b/vis/test/utils/isDefined.test.ts @@ -0,0 +1,61 @@ +import { isDefined } from "../../js/utils/isDefined"; + +describe("The isDefined util function tests", () => { + it("Returns false when null passed", () => { + const valueToCheck = null; + const result = isDefined(valueToCheck); + + expect(result).toBe(false); + }); + + it("Returns false when undefined passed", () => { + const valueToCheck = undefined; + const result = isDefined(valueToCheck); + + expect(result).toBe(false); + }); + + it("Returns true when empty array/object passed", () => { + const arrayValueToCheck = [] as unknown[]; + const objectValueToCheck = {}; + + const arrayResult = isDefined(arrayValueToCheck); + const objectResult = isDefined(objectValueToCheck); + + expect(arrayResult).toBe(true); + expect(objectResult).toBe(true); + }); + + it("Returns true when any number passed", () => { + const positiveNumberToCheck = 0; + const negativeNumberToCheck = -10; + + const positiveNumberResult = isDefined(positiveNumberToCheck); + const negativeNumberResult = isDefined(negativeNumberToCheck); + + expect(positiveNumberResult).toBe(true); + expect(negativeNumberResult).toBe(true); + }); + + it("Returns true when any string passed", () => { + const emptyStringToCheck = ""; + const stringToCheck = "Some string"; + + const emptyStringResult = isDefined(emptyStringToCheck); + const stringResult = isDefined(stringToCheck); + + expect(emptyStringResult).toBe(true); + expect(stringResult).toBe(true); + }); + + it("Returns true when any boolean passed", () => { + const trueBooleanToCheck = true; + const falseBooleanToCheck = false; + + const trueBooleanResult = isDefined(trueBooleanToCheck); + const falseBooleanResult = isDefined(falseBooleanToCheck); + + expect(trueBooleanResult).toBe(true); + expect(falseBooleanResult).toBe(true); + }); +}); From f1e817173bb5ea1c509ccdf411eeabb89bc252b7 Mon Sep 17 00:00:00 2001 From: andrei Date: Fri, 12 Sep 2025 10:43:17 +0200 Subject: [PATCH 033/149] refactor: types for the Footer component --- vis/js/components/Footer.tsx | 36 ++++++--- vis/js/templates/footers/CreatedBy.tsx | 107 +++++++++++++------------ vis/js/utils/dates.ts | 11 ++- 3 files changed, 85 insertions(+), 69 deletions(-) diff --git a/vis/js/components/Footer.tsx b/vis/js/components/Footer.tsx index 7c2cd728e..a090457d1 100644 --- a/vis/js/components/Footer.tsx +++ b/vis/js/components/Footer.tsx @@ -1,29 +1,41 @@ -// @ts-nocheck import React from "react"; import { connect } from "react-redux"; - import CreatedBy from "../templates/footers/CreatedBy"; -import {STREAMGRAPH_MODE} from "../reducers/chartType"; +import { STREAMGRAPH_MODE } from "../reducers/chartType"; -const Footer = ({service, timestamp, faqsUrl, faqsUrlStr, isStreamgraph}: { - service: string, - timestamp: number, - faqsUrl: string, - faqsUrlStr: string, - isStreamgraph: boolean +const Footer = ({ + service, + timestamp, + faqsUrl, + faqsUrlStr, + isStreamgraph, +}: { + service: string; + timestamp: string; + faqsUrl: string; + faqsUrlStr: string; + isStreamgraph: boolean; }) => { if (typeof service !== "string") { return null; } - if (service.startsWith("triple") || ["base", "pubmed", "openaire", "orcid"].includes(service)) { - return ; + if ( + service.startsWith("triple") || + ["base", "pubmed", "openaire", "orcid"].includes(service) + ) { + return ( + + ); } return null; }; -const mapStateToProps = (state) => ({ +const mapStateToProps = (state: any) => ({ service: state.service, timestamp: state.misc.timestamp, faqsUrl: state.modals.FAQsUrl, diff --git a/vis/js/templates/footers/CreatedBy.tsx b/vis/js/templates/footers/CreatedBy.tsx index a407fdc76..91f1b4701 100644 --- a/vis/js/templates/footers/CreatedBy.tsx +++ b/vis/js/templates/footers/CreatedBy.tsx @@ -1,65 +1,66 @@ -// @ts-nocheck -import React from "react"; - +import React, { FC } from "react"; import okmapsRoundLogo from "../../../images/okmaps-logo-round.svg"; - import { getDateTimeFromTimestamp } from "../../utils/dates"; import useMatomo from "../../utils/useMatomo"; -const CreatedBy = ({ timestamp, faqsUrl }) => { - const dateTime = getDateTimeFromTimestamp(timestamp); - const {trackEvent} = useMatomo(); +interface CreatedByProps { + faqsUrl: string; + timestamp?: string; +} - const trackLink = (action) => - trackEvent("Added components", action, "Footer"); +const CreatedBy: FC = ({ timestamp, faqsUrl }) => { + const { trackEvent } = useMatomo(); + const dateTime = getDateTimeFromTimestamp(timestamp); - // function remove "?embed=true" parameter from url - function urlWithoutEmbed() { - if (window.location.href.includes("?embed=true&")) { - return window.location.href.replace("embed=true&", ""); - } else if (window.location.href.includes("?embed=true")) { - return window.location.href.replace("?embed=true", ""); - } - if (window.location.href.includes("&embed=true")) { - return window.location.href.replace("&embed=true", ""); - } - return window.location.href + const trackLink = (action: string) => + trackEvent("Added components", action, "Footer"); + + // function remove "?embed=true" parameter from url + function urlWithoutEmbed() { + if (window.location.href.includes("?embed=true&")) { + return window.location.href.replace("embed=true&", ""); + } else if (window.location.href.includes("?embed=true")) { + return window.location.href.replace("?embed=true", ""); + } + if (window.location.href.includes("&embed=true")) { + return window.location.href.replace("&embed=true", ""); } + return window.location.href; + } - return ( - - ); + return ( + + ); }; export default CreatedBy; diff --git a/vis/js/utils/dates.ts b/vis/js/utils/dates.ts index 21325c4ab..e3d10888b 100644 --- a/vis/js/utils/dates.ts +++ b/vis/js/utils/dates.ts @@ -1,6 +1,9 @@ import dateFormat from "dateformat"; -export const getDateTimeFromTimestamp = (timestamp: string, { inUTC = false } = {}) => { +export const getDateTimeFromTimestamp = ( + timestamp?: string, + { inUTC = false } = {} +) => { if (typeof timestamp !== "string" || !timestamp) { return ""; } @@ -25,7 +28,7 @@ export const getDateFromTimestamp = ( const date = parseTimestamp(timestamp); - if (!date) return "" + if (!date) return ""; try { return dateFormat(date, format, inUTC); @@ -45,7 +48,7 @@ export const getTimeFromTimestamp = ( const date = parseTimestamp(timestamp); - if (!date) return "" + if (!date) return ""; try { return dateFormat(date, format, inUTC); @@ -64,4 +67,4 @@ const parseTimestamp = (timestamp: string): Date | null => { } return isNaN(parsedTimestamp.getTime()) ? null : parsedTimestamp; -}; \ No newline at end of file +}; From aa48af7b97f86053a7244b75682a8155dfbde2f8 Mon Sep 17 00:00:00 2001 From: andrei Date: Fri, 12 Sep 2025 15:07:59 +0200 Subject: [PATCH 034/149] refactor: comments for aliases and removal of unused ones --- webpack.config.js | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/webpack.config.js b/webpack.config.js index aac2a4459..e36426cc7 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -75,22 +75,14 @@ module.exports = (env) => { resolve: { extensions: [".*", ".js", ".jsx", ".ts", ".tsx"], alias: { - // + // Aliases for hypher and markjs are created for more convenient + // import of them from the node_modules/ folder hypher: "hypher/dist/jquery.hypher.js", markjs: "mark.js/dist/jquery.mark.js", // paths - images: path.resolve(__dirname, "vis/images"), lib: path.resolve(__dirname, "vis/lib"), styles: path.resolve(__dirname, "vis/stylesheets"), - - // modules - config: path.resolve(__dirname, "vis/js/default-config.js"), - headstart: path.resolve(__dirname, "vis/js/headstart.js"), - mediator: path.resolve(__dirname, "vis/js/mediator.js"), - - // building - process: "process/browser", }, }, From 42adf4d80c5d21cc2e80bbd34059db20f1f10a16 Mon Sep 17 00:00:00 2001 From: andrei Date: Fri, 12 Sep 2025 15:20:34 +0200 Subject: [PATCH 035/149] feat: aliases for vis/ and vis/js/ folders --- tsconfig.json | 33 +++++++++++++++++++-------------- webpack.config.js | 5 +++++ 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/tsconfig.json b/tsconfig.json index 324a33791..2c9b5e8b3 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,15 +1,20 @@ { - "compilerOptions": { - "target": "es5", - "allowJs": true, - "lib": ["ES2021", "DOM"], - "jsx": "react", - "moduleResolution": "node", - "outDir": "./dist", - "strict": true, - "esModuleInterop": true, - }, - "include": [ - "vis/**/*" - ] -} \ No newline at end of file + "compilerOptions": { + "target": "es5", + "allowJs": true, + "lib": ["ES2021", "DOM"], + "jsx": "react", + "moduleResolution": "node", + "outDir": "./dist", + "strict": true, + "esModuleInterop": true, + "baseUrl": ".", + "paths": { + "@/*": ["vis/*"], + "@js/*": ["vis/js/*"], + "markjs": ["mark.js/dist/jquery.mark.js"], + "hypher": ["hypher/dist/jquery.hypher.js"] + } + }, + "include": ["vis/**/*"] +} diff --git a/webpack.config.js b/webpack.config.js index e36426cc7..5c4cc390e 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -80,6 +80,11 @@ module.exports = (env) => { hypher: "hypher/dist/jquery.hypher.js", markjs: "mark.js/dist/jquery.mark.js", + // Aliases for the root frontend folder (vis) and the folder where + // code of components is mostly located (vis/js) + "@": path.resolve(__dirname, "vis/"), + "@js": path.resolve(__dirname, "vis/js/"), + // paths lib: path.resolve(__dirname, "vis/lib"), styles: path.resolve(__dirname, "vis/stylesheets"), From 21a6f48db9f50efd4867baab6ed48d13ede779f8 Mon Sep 17 00:00:00 2001 From: andrei Date: Fri, 12 Sep 2025 15:24:07 +0200 Subject: [PATCH 036/149] refactor: replace old aliases with new ones --- vis/app.ts | 4 ++-- vis/js/templates/BubbleTitle.tsx | 8 ++++---- webpack.config.js | 4 ---- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/vis/app.ts b/vis/app.ts index 439445d16..f46250ab4 100644 --- a/vis/app.ts +++ b/vis/app.ts @@ -1,4 +1,4 @@ -import "styles/main.scss"; +import "@/stylesheets/main.scss"; import config from "./js/default-config"; import "bootstrap"; @@ -19,4 +19,4 @@ export const start = (additionalConfig: any) => { const headstartRunner = new HeadstartRunner(config); headstartRunner.run(); -}; \ No newline at end of file +}; diff --git a/vis/js/templates/BubbleTitle.tsx b/vis/js/templates/BubbleTitle.tsx index 1fbdad547..13e07b367 100644 --- a/vis/js/templates/BubbleTitle.tsx +++ b/vis/js/templates/BubbleTitle.tsx @@ -3,15 +3,15 @@ import React from "react"; import { connect } from "react-redux"; import $ from "jquery"; -import jQuery from 'jquery'; +import jQuery from "jquery"; window.jQuery = jQuery; window.$ = $; require("hypher/dist/jquery.hypher.js"); -import 'hypher'; -import "lib/en.js"; -import "lib/de.js"; +import "hypher"; +import "@/lib/en"; +import "@/lib/de"; import "markjs"; diff --git a/webpack.config.js b/webpack.config.js index 5c4cc390e..7736f448f 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -84,10 +84,6 @@ module.exports = (env) => { // code of components is mostly located (vis/js) "@": path.resolve(__dirname, "vis/"), "@js": path.resolve(__dirname, "vis/js/"), - - // paths - lib: path.resolve(__dirname, "vis/lib"), - styles: path.resolve(__dirname, "vis/stylesheets"), }, }, From 9860cf00df78f62a08637164377e07d796a27c2c Mon Sep 17 00:00:00 2001 From: andrei Date: Fri, 12 Sep 2025 15:25:12 +0200 Subject: [PATCH 037/149] refactor: remove invalid extension --- webpack.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webpack.config.js b/webpack.config.js index 7736f448f..dfa097b44 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -73,7 +73,7 @@ module.exports = (env) => { }, resolve: { - extensions: [".*", ".js", ".jsx", ".ts", ".tsx"], + extensions: [".js", ".jsx", ".ts", ".tsx"], alias: { // Aliases for hypher and markjs are created for more convenient // import of them from the node_modules/ folder From 7b23e42f7e42dc878609bd0abec17a79e4e5e82f Mon Sep 17 00:00:00 2001 From: andrei Date: Fri, 12 Sep 2025 15:30:23 +0200 Subject: [PATCH 038/149] refactor: change order of aliases in the config --- webpack.config.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/webpack.config.js b/webpack.config.js index dfa097b44..6c0e04a46 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -75,15 +75,15 @@ module.exports = (env) => { resolve: { extensions: [".js", ".jsx", ".ts", ".tsx"], alias: { - // Aliases for hypher and markjs are created for more convenient - // import of them from the node_modules/ folder - hypher: "hypher/dist/jquery.hypher.js", - markjs: "mark.js/dist/jquery.mark.js", - // Aliases for the root frontend folder (vis) and the folder where // code of components is mostly located (vis/js) "@": path.resolve(__dirname, "vis/"), "@js": path.resolve(__dirname, "vis/js/"), + + // Aliases for hypher and markjs are created for more convenient + // import of them from the node_modules/ folder + hypher: "hypher/dist/jquery.hypher.js", + markjs: "mark.js/dist/jquery.mark.js", }, }, From 09bf49c705993bd7246bba0e664e107b2f9916e0 Mon Sep 17 00:00:00 2001 From: andrei Date: Fri, 12 Sep 2025 15:38:41 +0200 Subject: [PATCH 039/149] refactor: types folder --- vis/js/@types/config.ts | 146 ------------------ vis/js/HeadstartRunner.tsx | 2 +- vis/js/actions/index.ts | 37 +++-- vis/js/components/ContextLine.tsx | 2 +- vis/js/components/Employment.tsx | 2 +- vis/js/components/TitleContext.tsx | 2 +- vis/js/dataprocessing/managers/DataManager.ts | 3 +- vis/js/default-config.ts | 3 +- vis/js/reducers/contextLine.ts | 48 ++++-- vis/js/reducers/heading.ts | 23 +-- vis/js/reducers/index.ts | 6 +- vis/js/reducers/list.ts | 3 +- vis/js/reducers/query.ts | 4 +- vis/js/reducers/toolbar.ts | 2 +- vis/js/templates/AuthorImage.tsx | 2 +- vis/js/templates/ContextLine.tsx | 2 +- vis/js/templates/contextfeatures/Funder.tsx | 2 +- .../contextfeatures/LegacySearchLang.tsx | 2 +- .../templates/contextfeatures/NumArticles.tsx | 2 +- .../contextfeatures/ProjectRuntime.tsx | 2 +- vis/js/templates/contextfeatures/Timespan.tsx | 2 +- .../templates/contextfeatures/Timestamp.tsx | 2 +- vis/js/templates/listentry/PaperButtons.tsx | 2 +- vis/js/templates/paper/Icons.tsx | 4 +- .../components-props/index.ts} | 0 vis/js/types/configs/config.ts | 146 ++++++++++++++++++ vis/js/types/index.ts | 7 + vis/js/{@types => types/models}/author.ts | 0 vis/js/{@types => types/models}/paper.ts | 0 .../type-declarations/images.d.ts | 0 .../visualization}/context.ts | 0 .../visualization}/service.ts | 0 .../visualization}/visualization-types.ts | 0 vis/js/utils/backButton.ts | 42 ++++- vis/js/utils/dimensions.ts | 4 +- vis/js/utils/eventhandlers.ts | 2 +- vis/js/utils/force.ts | 3 +- vis/js/utils/title.ts | 14 +- vis/js/utils/useCitationStyle.ts | 2 +- vis/js/utils/usePaperExport.ts | 8 +- vis/js/utils/usePdfLookup.ts | 3 +- 41 files changed, 308 insertions(+), 228 deletions(-) delete mode 100644 vis/js/@types/config.ts rename vis/js/{@types/common-components-props.ts => types/components-props/index.ts} (100%) create mode 100644 vis/js/types/configs/config.ts create mode 100644 vis/js/types/index.ts rename vis/js/{@types => types/models}/author.ts (100%) rename vis/js/{@types => types/models}/paper.ts (100%) rename vis/js/{@types => types}/type-declarations/images.d.ts (100%) rename vis/js/{@types => types/visualization}/context.ts (100%) rename vis/js/{@types => types/visualization}/service.ts (100%) rename vis/js/{@types => types/visualization}/visualization-types.ts (100%) diff --git a/vis/js/@types/config.ts b/vis/js/@types/config.ts deleted file mode 100644 index 49af0234f..000000000 --- a/vis/js/@types/config.ts +++ /dev/null @@ -1,146 +0,0 @@ -import { localization } from "../i18n/localization"; - -type PaperSettings = { - showSocialMedia: boolean; - showReferences: boolean; - showCitations: boolean; - showReaders: boolean; - showTweets: boolean; - showPubmedCitations: boolean; - }; - - type ServiceNames = { - [key: string]: string; - }; - - export type Config = { - render_list: boolean; - render_map: boolean; - scale_toolbar: boolean; - is_authorview: boolean; - content_based: boolean; - is_streamgraph: boolean; - tag: string; - - metric_list?: boolean; - showDataSource?: boolean; - - min_height: number; - min_width: number; - max_height: number; - - reference_size: number; - max_diameter_size: number; - min_diameter_size: number; - max_area_size: number; - min_area_size: number; - - bubble_min_scale: number; - bubble_max_scale: number; - paper_min_scale: number; - paper_max_scale: number; - dynamic_sizing: boolean; - - dogear_width: number; - dogear_height: number; - paper_width_factor: number; - paper_height_factor: number; - - is_force_areas: boolean; - area_force_alpha: number; - is_force_papers: boolean; - papers_force_alpha: number; - dynamic_force_area: boolean; - dynamic_force_papers: boolean; - - zoom_factor: number; - - mode: string; - language: string; - hyphenation_language: string; - use_hypothesis: boolean; - service: string; - show_intro: boolean; - show_loading_screen: boolean; - is_evaluation: boolean; - enable_mouseover_evaluation: boolean; - credit_embed: boolean; - use_area_uri: boolean; - url_prefix: string | null; - url_prefix_datasets: string | null; - input_format: string; - base_unit: string; - preview_type: string; - convert_author_names: boolean; - debug: boolean; - - show_context: boolean; - create_title_from_context: boolean; - create_title_from_context_style: string; - custom_title: string | null; - show_context_oa_number: boolean; - show_context_timestamp: boolean; - - show_list: boolean; - doi_outlink: boolean; - url_outlink: boolean; - show_keywords: boolean; - hide_keywords_overview: boolean; - show_resulttype: boolean; - sort_options: string[]; - filter_options: string[]; - filter_field: string | null; - initial_sort: string | null; - - highlight_query_terms: boolean; - highlight_query_fields: string[]; - - filter_menu_dropdown: boolean; - list_images: string[]; - list_images_path: string; - visual_distributions: boolean; - external_vis_url: string; - - embed_modal: boolean; - share_modal: boolean; - hashtags_twitter_card: string; - faqs_button: boolean; - faqs_url: string; - show_cite_button: boolean; - cite_papers: boolean; - no_citation_doctypes: string[]; - export_papers: boolean; - show_twitter_button: boolean; - show_email_button: boolean; - paper: PaperSettings; - - streamgraph_colors: string[]; - - user_id: number; - max_documents: number; - service_names: ServiceNames; - - localization: typeof localization; - - scale_types: any[]; - - scale_by?: string; - server_url?: string; - files?: { - title: string, - file: string - }[] - - max_width?: number; - modal_info_type?: string; - credit?: boolean; - timestamp?: string; - options?: { - languages?: { - code: string, - lang_in_lang: string, - lang_in_eng: string, - }[], - }; - is_force_area?: boolean; - }; \ No newline at end of file diff --git a/vis/js/HeadstartRunner.tsx b/vis/js/HeadstartRunner.tsx index 88fd657f8..ad71476f8 100644 --- a/vis/js/HeadstartRunner.tsx +++ b/vis/js/HeadstartRunner.tsx @@ -25,7 +25,7 @@ import FetcherFactory from "./dataprocessing/fetchers/FetcherFactory"; import handleZoomSelectQuery from "./utils/backButton"; import Bowser from "bowser"; -import { Config } from "./@types/config"; +import { Config } from "./types/config"; class HeadstartRunner { public config: Config; diff --git a/vis/js/actions/index.ts b/vis/js/actions/index.ts index 7c6f2b95e..3c3cc4863 100644 --- a/vis/js/actions/index.ts +++ b/vis/js/actions/index.ts @@ -1,5 +1,4 @@ -import { Config } from "../@types/config"; -import { Paper } from "../@types/paper"; +import { Config, Paper } from "../types"; /** * All actions in this array are not delayed when the map is animated. @@ -39,7 +38,10 @@ export const zoomIn = ( selectedPaperData, }); -export const zoomOut = (callback: (() => void) | null, isFromBackButton = false) => ({ +export const zoomOut = ( + callback: (() => void) | null, + isFromBackButton = false +) => ({ type: "ZOOM_OUT", callback, isFromBackButton, @@ -77,7 +79,7 @@ export const initializeStore = ( streamHeight, listHeight, scalingFactors, - author + author, }); export const toggleList = () => ({ type: "TOGGLE_LIST" }); @@ -110,14 +112,20 @@ export const highlightArea = (paper: any) => ({ export const showPreview = (paper: any) => ({ type: "SHOW_PREVIEW", paper }); export const hidePreview = () => ({ type: "HIDE_PREVIEW" }); -export const showCitePaper = (paper: any) => ({ type: "SHOW_CITE_PAPER", paper }); +export const showCitePaper = (paper: any) => ({ + type: "SHOW_CITE_PAPER", + paper, +}); export const hideCitePaper = () => ({ type: "HIDE_CITE_PAPER" }); -export const showExportPaper = (paper: any) => ({ type: "SHOW_EXPORT_PAPER", paper }); +export const showExportPaper = (paper: any) => ({ + type: "SHOW_EXPORT_PAPER", + paper, +}); export const hideExportPaper = () => ({ type: "HIDE_EXPORT_PAPER" }); export const updateDimensions = (chart: any, list: any) => ({ -type: "RESIZE", + type: "RESIZE", listHeight: list.height, chartSize: chart.size, streamWidth: chart.width, @@ -158,10 +166,19 @@ export const closeInfoModal = () => ({ type: "CLOSE_INFO_MODAL" }); export const openResearcherModal = () => ({ type: "OPEN_RESEARCHER_MODAL" }); export const closeResearcherModal = () => ({ type: "CLOSE_RESEARCHER_MODAL" }); -export const openResearcherMetricsModal = () => ({ type: "OPEN_RESEARCHER_METRICS_MODAL" }); -export const closeResearcherMetricsModal = () => ({ type: "CLOSE_RESEARCHER_METRICS_MODAL" }); +export const openResearcherMetricsModal = () => ({ + type: "OPEN_RESEARCHER_METRICS_MODAL", +}); +export const closeResearcherMetricsModal = () => ({ + type: "CLOSE_RESEARCHER_METRICS_MODAL", +}); -export const scaleMap = (value: any, baseUnit: string, contentBased: boolean, sort: string) => ({ +export const scaleMap = ( + value: any, + baseUnit: string, + contentBased: boolean, + sort: string +) => ({ type: "SCALE", value, baseUnit, diff --git a/vis/js/components/ContextLine.tsx b/vis/js/components/ContextLine.tsx index 44bef1ff8..2fda2adac 100644 --- a/vis/js/components/ContextLine.tsx +++ b/vis/js/components/ContextLine.tsx @@ -23,7 +23,7 @@ import ResearcherMetricsInfo from "../templates/contextfeatures/ResearcherMetric import { Employment } from "./Employment"; import ResearcherInfo from "../templates/contextfeatures/ResearcherInfo"; import { STREAMGRAPH_MODE } from "../reducers/chartType"; -import { Author as AuthorType } from "../@types/author"; +import { Author as AuthorType } from "../types"; import { Localization } from "../i18n/localization"; interface ContextLineProps { diff --git a/vis/js/components/Employment.tsx b/vis/js/components/Employment.tsx index 8c9433b70..7a9789b61 100644 --- a/vis/js/components/Employment.tsx +++ b/vis/js/components/Employment.tsx @@ -1,6 +1,6 @@ import React, { FC, ReactNode } from "react"; import HoverPopover from "../templates/HoverPopover"; -import { Author } from "../@types/author"; +import { Author } from "../types"; import { shorten } from "../utils/string"; const MAX_ROLE_LENGTH = 18; diff --git a/vis/js/components/TitleContext.tsx b/vis/js/components/TitleContext.tsx index 5efaff9d3..06912c7e4 100644 --- a/vis/js/components/TitleContext.tsx +++ b/vis/js/components/TitleContext.tsx @@ -3,7 +3,7 @@ import { connect } from "react-redux"; import SubdisciplineTitle from "../templates/SubdisciplineTitle"; import AuthorImage from "../templates/AuthorImage"; -import { ServiceType } from "../@types/service"; +import { ServiceType } from "../types"; interface TitleContextProps { showAuthor: boolean; diff --git a/vis/js/dataprocessing/managers/DataManager.ts b/vis/js/dataprocessing/managers/DataManager.ts index 5829311d6..77e109dfa 100644 --- a/vis/js/dataprocessing/managers/DataManager.ts +++ b/vis/js/dataprocessing/managers/DataManager.ts @@ -24,8 +24,7 @@ import { transformData } from "../../utils/streamgraph"; import DEFAULT_SCHEME, { SchemeObject } from "../schemes/defaultScheme"; import PaperSanitizer from "../../utils/PaperSanitizer"; -import { Paper } from "../../@types/paper"; -import { Config } from "../../@types/config"; +import { Paper, Config } from "../../types"; const GOLDEN_RATIO = 2.6; diff --git a/vis/js/default-config.ts b/vis/js/default-config.ts index 566fbd55a..e753e45b0 100644 --- a/vis/js/default-config.ts +++ b/vis/js/default-config.ts @@ -1,6 +1,5 @@ -import { Config } from "./@types/config"; import { localization } from "./i18n/localization"; - +import { Config } from "./types"; /* eslint-disable no-template-curly-in-string */ var config: Config = { diff --git a/vis/js/reducers/contextLine.ts b/vis/js/reducers/contextLine.ts index c28f15086..94b43ad4d 100644 --- a/vis/js/reducers/contextLine.ts +++ b/vis/js/reducers/contextLine.ts @@ -1,9 +1,8 @@ -import { Config } from "../@types/config"; -import { Context } from "../@types/context"; +import { Config, Context } from "../types"; const exists = (param: any) => { return typeof param !== "undefined" && param !== "null" && param !== null; -} +}; const contextLine = (state = {}, action: any) => { if (action.canceled) { @@ -18,10 +17,12 @@ const contextLine = (state = {}, action: any) => { case "INITIALIZE": // service_name in config? return { - isResearcherDetailsEnabled: action.configObject.isResearcherDetailsEnabled, - isResearcherMetricsEnabled: action.configObject.isResearcherMetricsEnabled, + isResearcherDetailsEnabled: + action.configObject.isResearcherDetailsEnabled, + isResearcherMetricsEnabled: + action.configObject.isResearcherMetricsEnabled, showLanguage: action.configObject.showLanguage, - show_h_index: context?.params?.enable_h_index === 'true', + show_h_index: context?.params?.enable_h_index === "true", show: !!config.show_context && !!context.params, articlesCount: papers.length, modifier: getModifier(config, context, papers.length), @@ -44,7 +45,8 @@ const contextLine = (state = {}, action: any) => { contentProvider: context.params ? context.params.repo_name : null, paperCount: config.create_title_from_context_style === "viper" - ? papers.filter((p: any) => p.resulttype.includes("publication")).length + ? papers.filter((p: any) => p.resulttype.includes("publication")) + .length : null, datasetCount: config.create_title_from_context_style === "viper" @@ -54,7 +56,7 @@ const contextLine = (state = {}, action: any) => { config.create_title_from_context_style === "viper" && context.params ? context.params.funder : null, - + projectRuntime: getProjectRuntime(config, context), // probably deprecated, used in base in the past legacySearchLanguage: getLegacySearchLanguage(config, context), @@ -71,10 +73,11 @@ const contextLine = (state = {}, action: any) => { ? getDocumentLanguage(config, context) : null, // exclude date filters parameter - excludeDateFilters: context.params && context.params.exclude_date_filters + excludeDateFilters: + context.params && context.params.exclude_date_filters ? context.params.exclude_date_filters : null, - service: context.service + service: context.service, }; default: return state; @@ -89,7 +92,11 @@ const contextLine = (state = {}, action: any) => { * * @returns {string} either most-recent, most-relevant or null */ -export const getModifier = (config: Config, context: any, numOfPapers: number) => { +export const getModifier = ( + config: Config, + context: any, + numOfPapers: number +) => { if (context.service === "orcid") { return "most-recent"; } @@ -120,7 +127,9 @@ const getDocumentTypes = (config: Config, context: any) => { const documentTypesArray: string[] = []; // @ts-ignore - const documentTypeObj = config.options?.find((obj: any) => obj.id === propName); + const documentTypeObj = config.options?.find( + (obj: any) => obj.id === propName + ); context.params[propName].forEach((type: any) => { const typeObj = documentTypeObj.fields.find((obj: any) => obj.id == type); @@ -158,7 +167,7 @@ const getProjectRuntime = (config: Config, context: any) => { return `${context.params.start_date.slice( 0, - 4, + 4 )}–${context.params.end_date.slice(0, 4)}`; }; @@ -173,7 +182,7 @@ const getLegacySearchLanguage = (config: Config, context: Context) => { } const lang = config.options.languages.find( - (lang) => lang.code === context.params.lang_id, + (lang) => lang.code === context.params.lang_id ); if (!lang) { @@ -192,11 +201,18 @@ const getTimestamp = (config: Config, context: Context) => { }; const getMetadataQuality = (config: Config, context: Context) => { - if (!context.params || !context.params.min_descsize || isNaN(parseInt(context.params.min_descsize))) { + if ( + !context.params || + !context.params.min_descsize || + isNaN(parseInt(context.params.min_descsize)) + ) { return null; } - let minDescSize = typeof context.params.min_descsize === 'string' ? parseInt(context.params.min_descsize) : context.params.min_descsize; + let minDescSize = + typeof context.params.min_descsize === "string" + ? parseInt(context.params.min_descsize) + : context.params.min_descsize; if (context.service === "base") { if (minDescSize < 300) { diff --git a/vis/js/reducers/heading.ts b/vis/js/reducers/heading.ts index 2bc5f92dc..cf98d442a 100644 --- a/vis/js/reducers/heading.ts +++ b/vis/js/reducers/heading.ts @@ -1,4 +1,4 @@ -import { Config } from "../@types/config"; +import { Config } from "../types"; const context = (state = {}, action: any) => { if (action.canceled) { @@ -9,19 +9,23 @@ const context = (state = {}, action: any) => { case "INITIALIZE": return { title: action.contextObject.params - ? action.contextObject.params.title - : undefined, + ? action.contextObject.params.title + : undefined, acronym: action.contextObject.params - ? action.contextObject.params.acronym - : undefined, + ? action.contextObject.params.acronym + : undefined, projectId: action.contextObject.params - ? action.contextObject.params.project_id - : undefined, + ? action.contextObject.params.project_id + : undefined, presetTitle: action.configObject.title, // Todo: set titleStyle = "custom" if custom_title exists - titleStyle: action.contextObject.custom_title ? 'custom' : getTitleStyle(action.configObject), + titleStyle: action.contextObject.custom_title + ? "custom" + : getTitleStyle(action.configObject), titleLabelType: getTitleLabelType(action.configObject), - customTitle: action.configObject.custom_title ? action.configObject.custom_title : action.contextObject.params.custom_title, + customTitle: action.configObject.custom_title + ? action.configObject.custom_title + : action.contextObject.params.custom_title, }; default: return state; @@ -29,7 +33,6 @@ const context = (state = {}, action: any) => { }; const getTitleStyle = (config: Config) => { - if (config.create_title_from_context) { if (config.create_title_from_context_style) { return config.create_title_from_context_style; diff --git a/vis/js/reducers/index.ts b/vis/js/reducers/index.ts index a9558819d..84e8e0c19 100644 --- a/vis/js/reducers/index.ts +++ b/vis/js/reducers/index.ts @@ -32,7 +32,7 @@ import zoom from "./zoom"; import q_advanced from "./q_advanced"; import modalInfoType from "./modalInfoType"; import paper from "./paper"; -import { Config } from "../@types/config"; +import { Config } from "../types"; export default combineReducers({ animation, @@ -70,7 +70,9 @@ export const getInitialState = (config: Config) => { // TODO where possible, move the config values from INITIALIZE to here return { localization: { - ...config.localization[config.language === 'ger_linkedcat' ? 'ger' : 'eng'], + ...config.localization[ + config.language === "ger_linkedcat" ? "ger" : "eng" + ], ...config.localization[config.language], }, misc: { diff --git a/vis/js/reducers/list.ts b/vis/js/reducers/list.ts index 9c9cccc31..9f91670ce 100644 --- a/vis/js/reducers/list.ts +++ b/vis/js/reducers/list.ts @@ -1,5 +1,4 @@ -import { Config } from "../@types/config"; -import { Context } from "../@types/context"; +import { Config, Context } from "../types"; const list = ( state = { diff --git a/vis/js/reducers/query.ts b/vis/js/reducers/query.ts index 3bc5776bc..67f8c0ace 100644 --- a/vis/js/reducers/query.ts +++ b/vis/js/reducers/query.ts @@ -1,4 +1,4 @@ -import { Context } from "../@types/context"; +import { Context } from "../types"; const query = (state = { text: "", parsedTerms: [] }, action: any) => { if (action.canceled) { @@ -72,7 +72,7 @@ const getQueryTerms = (context: Context): string[] => { .map((x) => x.replace(/[\\:]/g, "")) .filter((x) => x !== ""); - phraseArray = Array.from(new Set(phraseArray)); + phraseArray = Array.from(new Set(phraseArray)); return phraseArray; }; diff --git a/vis/js/reducers/toolbar.ts b/vis/js/reducers/toolbar.ts index 208325f11..b13723a17 100644 --- a/vis/js/reducers/toolbar.ts +++ b/vis/js/reducers/toolbar.ts @@ -1,4 +1,4 @@ -import { Config } from "../@types/config"; +import { Config } from "../types"; const toolbar = (state = {}, action: any) => { if (action.canceled) { diff --git a/vis/js/templates/AuthorImage.tsx b/vis/js/templates/AuthorImage.tsx index 33fac768e..1ff680a38 100644 --- a/vis/js/templates/AuthorImage.tsx +++ b/vis/js/templates/AuthorImage.tsx @@ -1,6 +1,6 @@ import React, { FC } from "react"; import defaultImage from "../../images/author_default.png"; -import { ServiceType } from "../@types/service"; +import { ServiceType } from "../types"; export interface AuthorImageProps { orcidId: string; diff --git a/vis/js/templates/ContextLine.tsx b/vis/js/templates/ContextLine.tsx index 7361d2d9c..bf142d65d 100644 --- a/vis/js/templates/ContextLine.tsx +++ b/vis/js/templates/ContextLine.tsx @@ -1,5 +1,5 @@ import React, { FC } from "react"; -import { PropsWithChildren } from "../@types/common-components-props"; +import { PropsWithChildren } from "../types"; export const ContextLineTemplate: FC = ({ children }) => (

diff --git a/vis/js/templates/contextfeatures/Funder.tsx b/vis/js/templates/contextfeatures/Funder.tsx index 522f15ce0..10e5b704e 100644 --- a/vis/js/templates/contextfeatures/Funder.tsx +++ b/vis/js/templates/contextfeatures/Funder.tsx @@ -1,5 +1,5 @@ import React, { FC } from "react"; -import { PropsWithChildren } from "../../@types/common-components-props"; +import { PropsWithChildren } from "../../types"; const Funder: FC = ({ children }) => ( diff --git a/vis/js/templates/contextfeatures/LegacySearchLang.tsx b/vis/js/templates/contextfeatures/LegacySearchLang.tsx index d50822f8f..fe2f5eafe 100644 --- a/vis/js/templates/contextfeatures/LegacySearchLang.tsx +++ b/vis/js/templates/contextfeatures/LegacySearchLang.tsx @@ -1,5 +1,5 @@ import React, { FC } from "react"; -import { PropsWithChildren } from "../../@types/common-components-props"; +import { PropsWithChildren } from "../../types"; const LegacySearchLang: FC = ({ children }) => ( diff --git a/vis/js/templates/contextfeatures/NumArticles.tsx b/vis/js/templates/contextfeatures/NumArticles.tsx index 4754cc996..3682bba21 100644 --- a/vis/js/templates/contextfeatures/NumArticles.tsx +++ b/vis/js/templates/contextfeatures/NumArticles.tsx @@ -1,5 +1,5 @@ import React, { FC, ReactNode } from "react"; -import { PropsWithChildren } from "../../@types/common-components-props"; +import { PropsWithChildren } from "../../types"; interface NumArticlesProps extends PropsWithChildren { articlesCount: number; diff --git a/vis/js/templates/contextfeatures/ProjectRuntime.tsx b/vis/js/templates/contextfeatures/ProjectRuntime.tsx index 0ad4e54e3..e6d9e672b 100644 --- a/vis/js/templates/contextfeatures/ProjectRuntime.tsx +++ b/vis/js/templates/contextfeatures/ProjectRuntime.tsx @@ -1,5 +1,5 @@ import React, { FC } from "react"; -import { PropsWithChildren } from "../../@types/common-components-props"; +import { PropsWithChildren } from "../../types"; const ProjectRuntime: FC = ({ children }) => ( diff --git a/vis/js/templates/contextfeatures/Timespan.tsx b/vis/js/templates/contextfeatures/Timespan.tsx index 13098154c..18f4f909b 100644 --- a/vis/js/templates/contextfeatures/Timespan.tsx +++ b/vis/js/templates/contextfeatures/Timespan.tsx @@ -1,5 +1,5 @@ import React, { FC } from "react"; -import { PropsWithChildren } from "../../@types/common-components-props"; +import { PropsWithChildren } from "../../types"; const Timespan: FC = ({ children }) => ( diff --git a/vis/js/templates/contextfeatures/Timestamp.tsx b/vis/js/templates/contextfeatures/Timestamp.tsx index 6f5421960..7fe9f8183 100644 --- a/vis/js/templates/contextfeatures/Timestamp.tsx +++ b/vis/js/templates/contextfeatures/Timestamp.tsx @@ -1,5 +1,5 @@ import React, { FC } from "react"; -import { PropsWithChildren } from "../../@types/common-components-props"; +import { PropsWithChildren } from "../../types"; const Timestamp: FC = ({ children }) => ( diff --git a/vis/js/templates/listentry/PaperButtons.tsx b/vis/js/templates/listentry/PaperButtons.tsx index e61c8ca89..8245863d7 100644 --- a/vis/js/templates/listentry/PaperButtons.tsx +++ b/vis/js/templates/listentry/PaperButtons.tsx @@ -6,7 +6,7 @@ import { getPaperPDFClickHandler } from "../../utils/data"; import { mapDispatchToListEntriesProps } from "../../utils/eventhandlers"; import Highlight from "../../components/Highlight"; import { isNonTextDocument } from "../Paper"; -import { Paper } from "../../@types/paper"; +import { Paper } from "../../types"; // TODO: Update type for paper with new ones after merge (using union type) interface PaperButtonsProps { diff --git a/vis/js/templates/paper/Icons.tsx b/vis/js/templates/paper/Icons.tsx index c1e75f50a..51b63de3a 100644 --- a/vis/js/templates/paper/Icons.tsx +++ b/vis/js/templates/paper/Icons.tsx @@ -1,10 +1,10 @@ import React from "react"; import { getIcon } from "../listentry/Tags"; -import { Paper } from "../../@types/paper"; +import { Paper } from "../../types"; interface IconsProps { paper: Paper; - iconClasses: string + iconClasses: string; } const Icons = ({ paper, iconClasses }: IconsProps) => { diff --git a/vis/js/@types/common-components-props.ts b/vis/js/types/components-props/index.ts similarity index 100% rename from vis/js/@types/common-components-props.ts rename to vis/js/types/components-props/index.ts diff --git a/vis/js/types/configs/config.ts b/vis/js/types/configs/config.ts new file mode 100644 index 000000000..04c571247 --- /dev/null +++ b/vis/js/types/configs/config.ts @@ -0,0 +1,146 @@ +import { localization } from "../../i18n/localization"; + +type PaperSettings = { + showSocialMedia: boolean; + showReferences: boolean; + showCitations: boolean; + showReaders: boolean; + showTweets: boolean; + showPubmedCitations: boolean; +}; + +type ServiceNames = { + [key: string]: string; +}; + +export type Config = { + render_list: boolean; + render_map: boolean; + scale_toolbar: boolean; + is_authorview: boolean; + content_based: boolean; + is_streamgraph: boolean; + tag: string; + + metric_list?: boolean; + showDataSource?: boolean; + + min_height: number; + min_width: number; + max_height: number; + + reference_size: number; + max_diameter_size: number; + min_diameter_size: number; + max_area_size: number; + min_area_size: number; + + bubble_min_scale: number; + bubble_max_scale: number; + paper_min_scale: number; + paper_max_scale: number; + dynamic_sizing: boolean; + + dogear_width: number; + dogear_height: number; + paper_width_factor: number; + paper_height_factor: number; + + is_force_areas: boolean; + area_force_alpha: number; + is_force_papers: boolean; + papers_force_alpha: number; + dynamic_force_area: boolean; + dynamic_force_papers: boolean; + + zoom_factor: number; + + mode: string; + language: string; + hyphenation_language: string; + use_hypothesis: boolean; + service: string; + show_intro: boolean; + show_loading_screen: boolean; + is_evaluation: boolean; + enable_mouseover_evaluation: boolean; + credit_embed: boolean; + use_area_uri: boolean; + url_prefix: string | null; + url_prefix_datasets: string | null; + input_format: string; + base_unit: string; + preview_type: string; + convert_author_names: boolean; + debug: boolean; + + show_context: boolean; + create_title_from_context: boolean; + create_title_from_context_style: string; + custom_title: string | null; + show_context_oa_number: boolean; + show_context_timestamp: boolean; + + show_list: boolean; + doi_outlink: boolean; + url_outlink: boolean; + show_keywords: boolean; + hide_keywords_overview: boolean; + show_resulttype: boolean; + sort_options: string[]; + filter_options: string[]; + filter_field: string | null; + initial_sort: string | null; + + highlight_query_terms: boolean; + highlight_query_fields: string[]; + + filter_menu_dropdown: boolean; + list_images: string[]; + list_images_path: string; + visual_distributions: boolean; + external_vis_url: string; + + embed_modal: boolean; + share_modal: boolean; + hashtags_twitter_card: string; + faqs_button: boolean; + faqs_url: string; + show_cite_button: boolean; + cite_papers: boolean; + no_citation_doctypes: string[]; + export_papers: boolean; + show_twitter_button: boolean; + show_email_button: boolean; + paper: PaperSettings; + + streamgraph_colors: string[]; + + user_id: number; + max_documents: number; + service_names: ServiceNames; + + localization: typeof localization; + + scale_types: any[]; + + scale_by?: string; + server_url?: string; + files?: { + title: string; + file: string; + }[]; + + max_width?: number; + modal_info_type?: string; + credit?: boolean; + timestamp?: string; + options?: { + languages?: { + code: string; + lang_in_lang: string; + lang_in_eng: string; + }[]; + }; + is_force_area?: boolean; +}; diff --git a/vis/js/types/index.ts b/vis/js/types/index.ts new file mode 100644 index 000000000..10f9c806e --- /dev/null +++ b/vis/js/types/index.ts @@ -0,0 +1,7 @@ +export { PropsWithChildren } from "./components-props"; +export { Config } from "./configs/config"; +export { Author } from "./models/author"; +export { Paper } from "./models/paper"; +export { Context } from "./visualization/context"; +export { ServiceType } from "./visualization/service"; +export { VisualizationTypes } from "./visualization/visualization-types"; diff --git a/vis/js/@types/author.ts b/vis/js/types/models/author.ts similarity index 100% rename from vis/js/@types/author.ts rename to vis/js/types/models/author.ts diff --git a/vis/js/@types/paper.ts b/vis/js/types/models/paper.ts similarity index 100% rename from vis/js/@types/paper.ts rename to vis/js/types/models/paper.ts diff --git a/vis/js/@types/type-declarations/images.d.ts b/vis/js/types/type-declarations/images.d.ts similarity index 100% rename from vis/js/@types/type-declarations/images.d.ts rename to vis/js/types/type-declarations/images.d.ts diff --git a/vis/js/@types/context.ts b/vis/js/types/visualization/context.ts similarity index 100% rename from vis/js/@types/context.ts rename to vis/js/types/visualization/context.ts diff --git a/vis/js/@types/service.ts b/vis/js/types/visualization/service.ts similarity index 100% rename from vis/js/@types/service.ts rename to vis/js/types/visualization/service.ts diff --git a/vis/js/@types/visualization-types.ts b/vis/js/types/visualization/visualization-types.ts similarity index 100% rename from vis/js/@types/visualization-types.ts rename to vis/js/types/visualization/visualization-types.ts diff --git a/vis/js/utils/backButton.ts b/vis/js/utils/backButton.ts index 8ef1bace3..451a8d21f 100644 --- a/vis/js/utils/backButton.ts +++ b/vis/js/utils/backButton.ts @@ -1,6 +1,6 @@ -import { Config } from "../@types/config"; import { deselectPaper, selectPaper, zoomIn, zoomOut } from "../actions"; import DataManager from "../dataprocessing/managers/DataManager"; +import { Config } from "../types"; import { createAnimationCallback } from "./eventhandlers"; /** @@ -11,7 +11,11 @@ import { createAnimationCallback } from "./eventhandlers"; * * For a better user experience, it should be debounced. */ -const handleZoomSelectQuery = (dataManager: DataManager, store: any, config: Config) => { +const handleZoomSelectQuery = ( + dataManager: DataManager, + store: any, + config: Config +) => { const params = new URLSearchParams(window.location.search); if (params.has("area") && params.has("paper")) { @@ -34,7 +38,12 @@ const handleZoomSelectQuery = (dataManager: DataManager, store: any, config: Con export default handleZoomSelectQuery; -const zoomKnowledgeMap = (dataManager: DataManager, store: any, areaID: string, paper?: any) => { +const zoomKnowledgeMap = ( + dataManager: DataManager, + store: any, + areaID: string, + paper?: any +) => { const area = dataManager.areas.find((a) => a.area_uri == areaID); if (!area) { @@ -52,7 +61,12 @@ const zoomKnowledgeMap = (dataManager: DataManager, store: any, areaID: string, ); }; -const zoomStreamgraph = (dataManager: DataManager, store: any, streamID: string, paper?: any) => { +const zoomStreamgraph = ( + dataManager: DataManager, + store: any, + streamID: string, + paper?: any +) => { const stream = dataManager.streams.find((s: any) => s.key == streamID) as any; if (!stream) { @@ -70,7 +84,12 @@ const zoomStreamgraph = (dataManager: DataManager, store: any, streamID: string, ); }; -const selectPaperWithZoom = (dataManager: DataManager, store: any, params: any, config: Config) => { +const selectPaperWithZoom = ( + dataManager: DataManager, + store: any, + params: any, + config: Config +) => { const paper = dataManager.papers.find( (p) => p.safe_id === params.get("paper") ); @@ -90,7 +109,11 @@ const selectPaperWithZoom = (dataManager: DataManager, store: any, params: any, zoomKnowledgeMap(dataManager, store, areaID, paper); }; -const selectPaperWithoutZoom = (dataManager: DataManager, store: any, params: any) => { +const selectPaperWithoutZoom = ( + dataManager: DataManager, + store: any, + params: any +) => { const paper = dataManager.papers.find( (p) => p.safe_id === params.get("paper") ); @@ -102,7 +125,12 @@ const selectPaperWithoutZoom = (dataManager: DataManager, store: any, params: an store.dispatch(selectPaper(paper, true)); }; -const deselectAndZoomIn = (dataManager: DataManager, store: any, params: any, config: Config) => { +const deselectAndZoomIn = ( + dataManager: DataManager, + store: any, + params: any, + config: Config +) => { const areaID = params.get("area"); // possible optimization: only deselecting a paper if the area is the same diff --git a/vis/js/utils/dimensions.ts b/vis/js/utils/dimensions.ts index e3a70e3cb..d50ca248f 100644 --- a/vis/js/utils/dimensions.ts +++ b/vis/js/utils/dimensions.ts @@ -1,7 +1,7 @@ // @ts-nocheck import $ from "jquery"; -import { Config } from "../@types/config"; +import { Config } from "../types/config"; // ?: fix scaling here? @@ -54,7 +54,7 @@ export const getChartSize = (config: Config) => { const computedHeight = (parentHeight === 0 ? Math.max(clientHeight, innerHeight) - : container.height()) - + : container.height()) - Math.max(TITLE_HEIGHT, titleImageHeight) - toolbarHeight - footerHeight - diff --git a/vis/js/utils/eventhandlers.ts b/vis/js/utils/eventhandlers.ts index e593e4e93..36c8ade4d 100644 --- a/vis/js/utils/eventhandlers.ts +++ b/vis/js/utils/eventhandlers.ts @@ -1,4 +1,4 @@ -import { Paper } from "../@types/paper"; +import { Paper } from "../types"; import { zoomIn, zoomOut, diff --git a/vis/js/utils/force.ts b/vis/js/utils/force.ts index fd34aaf03..b4484f90f 100644 --- a/vis/js/utils/force.ts +++ b/vis/js/utils/force.ts @@ -1,7 +1,6 @@ // @ts-nocheck import d3 from "d3"; -import { Paper } from "../@types/paper"; -import { Config } from "../@types/config"; +import { Paper, Config } from "../types"; /** * Applies force layout on the knowledge map bubbles and papers. diff --git a/vis/js/utils/title.ts b/vis/js/utils/title.ts index 8bbe162d2..e2aea7bed 100644 --- a/vis/js/utils/title.ts +++ b/vis/js/utils/title.ts @@ -1,4 +1,4 @@ -import { Paper } from "../@types/paper"; +import { Paper } from "../types"; /** * Sets correct page title based on the current action and state. @@ -7,7 +7,11 @@ import { Paper } from "../@types/paper"; * @param {string} defaultTitle the original page title Headstart has when it loads * @param {Object} state the Redux state object */ -export const handleTitleAction = (action: any, defaultTitle: string, state: any) => { +export const handleTitleAction = ( + action: any, + defaultTitle: string, + state: any +) => { switch (action.type) { case "ZOOM_IN": document.title = getZoomInTitle( @@ -30,7 +34,11 @@ export const handleTitleAction = (action: any, defaultTitle: string, state: any) } }; -const getZoomInTitle = (areaData: Partial, paperData: Paper | null, defaultTitle: string) => { +const getZoomInTitle = ( + areaData: Partial, + paperData: Paper | null, + defaultTitle: string +) => { if (!areaData) { return document.title; } diff --git a/vis/js/utils/useCitationStyle.ts b/vis/js/utils/useCitationStyle.ts index b502e381b..3fe1b06a2 100644 --- a/vis/js/utils/useCitationStyle.ts +++ b/vis/js/utils/useCitationStyle.ts @@ -12,7 +12,7 @@ import mlaCsl from "../../csl/mla.csl"; import chiCsl from "../../csl/chicago.csl"; // @ts-ignore import acmCsl from "../../csl/acm.csl"; -import { Paper } from "../@types/paper"; +import { Paper } from "../types"; const citationConfig = plugins.config.get("@csl"); citationConfig.templates.add("custom-apa", apaCsl); diff --git a/vis/js/utils/usePaperExport.ts b/vis/js/utils/usePaperExport.ts index 56396c70d..ea78486a3 100644 --- a/vis/js/utils/usePaperExport.ts +++ b/vis/js/utils/usePaperExport.ts @@ -1,5 +1,5 @@ import { useState, useEffect } from "react"; -import { Paper } from "../@types/paper"; +import { Paper } from "../types"; export const PAPER_EXPORT_ENDPOINT = "services/exportMetadata.php?format=bibtex"; @@ -24,7 +24,11 @@ const usePaperExport = (paper: Paper, serverUrl: string) => { export default usePaperExport; -const loadPaperExport = (paper: Paper, serverUrl: string, callback: (params: any) => void) => { +const loadPaperExport = ( + paper: Paper, + serverUrl: string, + callback: (params: any) => void +) => { fetch(serverUrl + PAPER_EXPORT_ENDPOINT, { method: "POST", mode: "cors", diff --git a/vis/js/utils/usePdfLookup.ts b/vis/js/utils/usePdfLookup.ts index 5e0ee302b..02537fe2d 100644 --- a/vis/js/utils/usePdfLookup.ts +++ b/vis/js/utils/usePdfLookup.ts @@ -2,10 +2,9 @@ import { useState, useEffect } from "react"; import $ from "jquery"; import { isFileAvailable } from "./data"; -import { Paper } from "../@types/paper"; +import { Paper, VisualizationTypes } from "../types"; import { useSelector } from "react-redux"; import { ensureThatURLStartsWithHTTP } from "./url"; -import { VisualizationTypes } from "../@types/visualization-types"; const getVisualizationIdFromStore = (state: any): string => { return state.data.options.visualizationId; From 3363859e6f95d38de526b8ff54179dd7c322a35e Mon Sep 17 00:00:00 2001 From: andrei Date: Fri, 12 Sep 2025 16:09:29 +0200 Subject: [PATCH 040/149] refactor: typo errors --- vis/js/components/ContextLine.tsx | 2 +- vis/js/templates/SubdisciplineTitle.tsx | 4 ++-- vis/js/types/index.ts | 8 +++++++- vis/test/data/papers.ts | 2 +- vis/test/datamanagers/countmetrics.test.ts | 13 ++++--------- vis/test/datamanagers/datamanager.test.ts | 3 +-- 6 files changed, 16 insertions(+), 16 deletions(-) diff --git a/vis/js/components/ContextLine.tsx b/vis/js/components/ContextLine.tsx index 2fda2adac..66b794c77 100644 --- a/vis/js/components/ContextLine.tsx +++ b/vis/js/components/ContextLine.tsx @@ -23,7 +23,7 @@ import ResearcherMetricsInfo from "../templates/contextfeatures/ResearcherMetric import { Employment } from "./Employment"; import ResearcherInfo from "../templates/contextfeatures/ResearcherInfo"; import { STREAMGRAPH_MODE } from "../reducers/chartType"; -import { Author as AuthorType } from "../types"; +import { Author as AuthorType } from "../types/models/author"; import { Localization } from "../i18n/localization"; interface ContextLineProps { diff --git a/vis/js/templates/SubdisciplineTitle.tsx b/vis/js/templates/SubdisciplineTitle.tsx index 401496b4b..907c7b631 100644 --- a/vis/js/templates/SubdisciplineTitle.tsx +++ b/vis/js/templates/SubdisciplineTitle.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import React, { ReactNode } from "react"; import Heading from "../components/Heading"; import BackLink from "../components/Backlink"; @@ -11,7 +11,7 @@ class SubdisciplineTitle extends React.Component {

- +
); diff --git a/vis/js/types/index.ts b/vis/js/types/index.ts index 10f9c806e..1454e8c6a 100644 --- a/vis/js/types/index.ts +++ b/vis/js/types/index.ts @@ -1,7 +1,13 @@ export { PropsWithChildren } from "./components-props"; export { Config } from "./configs/config"; export { Author } from "./models/author"; -export { Paper } from "./models/paper"; export { Context } from "./visualization/context"; export { ServiceType } from "./visualization/service"; export { VisualizationTypes } from "./visualization/visualization-types"; +export { + Paper, + OrcidPaper, + BasePaper, + PubmedPaper, + CommonPaperDataForAllIntegrations, +} from "./models/paper"; diff --git a/vis/test/data/papers.ts b/vis/test/data/papers.ts index 1de5b2abf..32f6f6c71 100644 --- a/vis/test/data/papers.ts +++ b/vis/test/data/papers.ts @@ -3,7 +3,7 @@ import { CommonPaperDataForAllIntegrations, OrcidPaper, PubmedPaper, -} from "../../js/@types/paper"; +} from "../../js/types"; const MOCK_COMMON_PAPER_DATA: CommonPaperDataForAllIntegrations = { id: "id", diff --git a/vis/test/datamanagers/countmetrics.test.ts b/vis/test/datamanagers/countmetrics.test.ts index da010a961..2dedad980 100644 --- a/vis/test/datamanagers/countmetrics.test.ts +++ b/vis/test/datamanagers/countmetrics.test.ts @@ -1,9 +1,4 @@ -import { - BasePaper, - OrcidPaper, - Paper, - PubmedPaper, -} from "../../js/@types/paper"; +import { BasePaper, OrcidPaper, Paper, PubmedPaper } from "../../js/types"; import DataManager from "../../js/dataprocessing/managers/DataManager"; import { productionKMConfig } from "../data/base-raw"; import { @@ -14,7 +9,7 @@ import { describe("The private function __countMetrics of the DataManager (with PubMed)", () => { const setupAndRunCountMetrics = ( - paper: PubmedPaper = MOCK_PUBMED_PAPER_DATA + paper: PubmedPaper = MOCK_PUBMED_PAPER_DATA, ): PubmedPaper => { // Create the instance of DataManager class const dataManager = new DataManager(productionKMConfig); @@ -223,7 +218,7 @@ describe("The private function __countMetrics of the DataManager (with PubMed)", describe("The private function __countMetrics of the DataManager (with BASE)", () => { const setupAndRunCountMetrics = ( - paper: BasePaper = MOCK_BASE_PAPER_DATA + paper: BasePaper = MOCK_BASE_PAPER_DATA, ): BasePaper => { // Create the instance of DataManager class const dataManager = new DataManager(productionKMConfig); @@ -432,7 +427,7 @@ describe("The private function __countMetrics of the DataManager (with BASE)", ( describe("The private function __countMetrics of the DataManager (with ORCID)", () => { const setupAndRunCountMetrics = ( - paper: OrcidPaper = MOCK_ORCID_PAPER_DATA + paper: OrcidPaper = MOCK_ORCID_PAPER_DATA, ): OrcidPaper => { // Create the instance of DataManager class const dataManager = new DataManager(productionKMConfig); diff --git a/vis/test/datamanagers/datamanager.test.ts b/vis/test/datamanagers/datamanager.test.ts index 41a32c29c..095dda70a 100644 --- a/vis/test/datamanagers/datamanager.test.ts +++ b/vis/test/datamanagers/datamanager.test.ts @@ -7,8 +7,7 @@ import { productionKMData, productionKMDataModified, } from "../data/base-raw"; -import { Config } from "../../js/@types/config"; -import { Paper } from "../../js/@types/paper"; +import { Config, Paper } from "../../js/types"; describe("Default data manager", () => { it("Doesn't crash", () => { From 74cd1795a2c28f52e9fbe6813fe0d1c04a78a55d Mon Sep 17 00:00:00 2001 From: andrei Date: Fri, 12 Sep 2025 16:33:26 +0200 Subject: [PATCH 041/149] refactor: add missed property to the Localization type --- vis/js/components/ContextLine.tsx | 7 +- vis/js/i18n/localization.ts | 37 +++--- .../templates/contextfeatures/NumArticles.tsx | 8 +- .../templates/contextfeatures/Timestamp.tsx | 10 +- vis/test/component/contextline.test.jsx | 116 +++++++++--------- 5 files changed, 94 insertions(+), 84 deletions(-) diff --git a/vis/js/components/ContextLine.tsx b/vis/js/components/ContextLine.tsx index 66b794c77..6f1bb27c7 100644 --- a/vis/js/components/ContextLine.tsx +++ b/vis/js/components/ContextLine.tsx @@ -160,7 +160,12 @@ export const ContextLine = (props: ContextLineProps) => { {isDefined(params.legacySearchLanguage) && ( {params.legacySearchLanguage} )} - {isDefined(params.timestamp) && {params.timestamp}} + {isDefined(params.timestamp) && ( + + )} = ({ modifierLimit, isStreamgraph, }) => { - let displayText: - | ReactNode - | string = `${articlesCount} ${articlesCountLabel}`; + console.log("openAccessArticlesCount: ", openAccessArticlesCount); + let displayText: ReactNode | string = + `${articlesCount} ${articlesCountLabel}`; if (service === "orcid") { if (articlesCount >= modifierLimit) { @@ -54,7 +54,7 @@ export const NumArticles: FC = ({ return ( {displayText}{" "} - {openAccessArticlesCount !== null && ( + {openAccessArticlesCount != null && ( <>({openAccessArticlesCount} open access) )} diff --git a/vis/js/templates/contextfeatures/Timestamp.tsx b/vis/js/templates/contextfeatures/Timestamp.tsx index 7fe9f8183..29242f547 100644 --- a/vis/js/templates/contextfeatures/Timestamp.tsx +++ b/vis/js/templates/contextfeatures/Timestamp.tsx @@ -1,9 +1,13 @@ import React, { FC } from "react"; -import { PropsWithChildren } from "../../types"; -const Timestamp: FC = ({ children }) => ( +interface TimestampProps { + label: string; + value: string; +} + +const Timestamp: FC = ({ label, value }) => ( - {children} + {label}: {value} ); diff --git a/vis/test/component/contextline.test.jsx b/vis/test/component/contextline.test.jsx index eda1f61b3..6eca56074 100644 --- a/vis/test/component/contextline.test.jsx +++ b/vis/test/component/contextline.test.jsx @@ -62,7 +62,7 @@ const setup = (overrideStoreObject = {}) => { lang_all: "All languages", }, }, - overrideStoreObject + overrideStoreObject, ); return storeObject; @@ -99,7 +99,7 @@ describe("Context line component", () => { - + , ); expect(screen.getByTestId("context")).toBeInTheDocument(); @@ -114,7 +114,7 @@ describe("Context line component", () => { - + , ); expect(screen.queryByTestId("context")).toBeNull(); @@ -132,7 +132,7 @@ describe("Context line component", () => { , - container + container, ); expect(container.childNodes.length).toBe(0); @@ -151,7 +151,7 @@ describe("Context line component", () => { - + , ); expect(result.container.querySelector("#source")).toBe(null); @@ -170,11 +170,11 @@ describe("Context line component", () => { - + , ); expect(result.container.querySelector("#source").textContent).toContain( - DATA_SOURCE + DATA_SOURCE, ); }); @@ -192,12 +192,12 @@ describe("Context line component", () => { - + , ); expect( result.container.querySelector("#source").querySelector("a.underline") - .textContent + .textContent, ).toContain("CoVis database"); }); @@ -213,7 +213,7 @@ describe("Context line component", () => { - + , ); expect(result.container.querySelector("#timespan")).toBe(null); @@ -231,11 +231,11 @@ describe("Context line component", () => { - + , ); expect(result.container.querySelector("#timespan").textContent).toEqual( - TIMESPAN + TIMESPAN, ); }); @@ -251,7 +251,7 @@ describe("Context line component", () => { - + , ); expect(result.container.querySelector("#context-paper_count")).toBe(null); @@ -269,11 +269,11 @@ describe("Context line component", () => { - + , ); expect( - result.container.querySelector("#context-paper_count").textContent + result.container.querySelector("#context-paper_count").textContent, ).toContain(PAPER_COUNT.toString()); }); @@ -289,7 +289,7 @@ describe("Context line component", () => { - + , ); expect(result.container.querySelector("#context-paper_count")).toBe(null); @@ -307,11 +307,11 @@ describe("Context line component", () => { - + , ); expect( - result.container.querySelector("#context-dataset_count").textContent + result.container.querySelector("#context-dataset_count").textContent, ).toContain(DATASET_COUNT.toString()); }); @@ -327,7 +327,7 @@ describe("Context line component", () => { - + , ); expect(result.container.querySelector("#context-funder")).toBe(null); @@ -345,11 +345,11 @@ describe("Context line component", () => { - + , ); expect( - result.container.querySelector("#context-funder").textContent + result.container.querySelector("#context-funder").textContent, ).toContain(FUNDER); }); @@ -366,11 +366,11 @@ describe("Context line component", () => { , - container + container, ); expect(result.container.querySelector("#context-project_runtime")).toBe( - null + null, ); }); @@ -386,11 +386,11 @@ describe("Context line component", () => { - + , ); expect( - result.container.querySelector("#context-project_runtime").textContent + result.container.querySelector("#context-project_runtime").textContent, ).toEqual(PROJ_RUNTIME); }); @@ -406,7 +406,7 @@ describe("Context line component", () => { - + , ); expect(result.container.querySelector("#legacy_search_lang")).toBe(null); @@ -424,11 +424,11 @@ describe("Context line component", () => { - + , ); expect( - result.container.querySelector("#legacy_search_lang").textContent + result.container.querySelector("#legacy_search_lang").textContent, ).toEqual(SEARCH_LANG); }); @@ -444,7 +444,7 @@ describe("Context line component", () => { - + , ); expect(result.container.querySelector("#timestamp")).toBe(null); @@ -463,11 +463,11 @@ describe("Context line component", () => { , - container + container, ); expect( - result.container.querySelector("#timestamp").textContent + result.container.querySelector("#timestamp").textContent, ).toContain(TIMESTAMP); }); @@ -485,11 +485,11 @@ describe("Context line component", () => { , - container + container, ); expect( - result.container.querySelector("#search_lang").textContent + result.container.querySelector("#search_lang").textContent, ).toEqual("English"); }); @@ -506,11 +506,11 @@ describe("Context line component", () => { - + , ); expect( - result.container.querySelector("#search_lang").textContent + result.container.querySelector("#search_lang").textContent, ).toEqual(storeObject.localization.lang_all); }); }); @@ -600,11 +600,11 @@ describe("Context line component", () => { - + , ); expect( - result.container.querySelector("#num_articles").textContent + result.container.querySelector("#num_articles").textContent, ).toMatch(new RegExp(`^${ARTICLES_COUNT}`)); }); @@ -620,7 +620,7 @@ describe("Context line component", () => { - + , ); expect(result.container.querySelector("#modifier")).toBe(null); @@ -640,7 +640,7 @@ describe("Context line component", () => { - + , ); screen.debug(); @@ -648,7 +648,7 @@ describe("Context line component", () => { const modifier = result.container.querySelector("#modifier"); expect(modifier).not.toBe(null); expect(result.container.querySelector("#modifier").textContent).toEqual( - storeObject.localization.most_recent_label + storeObject.localization.most_recent_label, ); }); @@ -666,11 +666,11 @@ describe("Context line component", () => { - + , ); expect(result.container.querySelector("#modifier").textContent).toEqual( - storeObject.localization.most_relevant_label + storeObject.localization.most_relevant_label, ); }); @@ -689,11 +689,11 @@ describe("Context line component", () => { - + , ); expect(result.container.querySelector("#modifier").textContent).toEqual( - storeObject.localization.most_relevant_label + storeObject.localization.most_relevant_label, ); }); @@ -711,11 +711,11 @@ describe("Context line component", () => { - + , ); expect( - result.container.querySelector("#num_articles").textContent + result.container.querySelector("#num_articles").textContent, ).toMatch(`${OPEN_ACCESS_COUNT} open access`); }); @@ -731,11 +731,11 @@ describe("Context line component", () => { - + , ); expect( - result.container.querySelector("#num_articles").textContent + result.container.querySelector("#num_articles").textContent, ).not.toMatch(new RegExp(`open access\\)$`)); }); }); @@ -753,7 +753,7 @@ describe("Context line component", () => { - + , ); expect(result.container.querySelector("#document_types")).toBe(null); @@ -772,22 +772,22 @@ describe("Context line component", () => { - + , ); expect(result.container.querySelector("#document_types")).not.toBe(null); expect( - result.container.querySelector("#document_types").textContent + result.container.querySelector("#document_types").textContent, ).toEqual(storeObject.localization.documenttypes_label); expect( - result.container.querySelector("#document_types").getAttribute("class") + result.container.querySelector("#document_types").getAttribute("class"), ).toContain("context_item"); expect( result.container .querySelector("#document_types>span") - .getAttribute("class") + .getAttribute("class"), ).toContain("context_moreinfo"); }); @@ -802,7 +802,7 @@ describe("Context line component", () => { - + , ); const target = result.container.querySelector("#document_types>span"); @@ -813,7 +813,7 @@ describe("Context line component", () => { const popover = result.container.querySelector("#doctypes-popover"); expect(popover).not.toBeNull(); expect(popover.textContent).toContain( - storeObject.localization.documenttypes_tooltip + storeObject.localization.documenttypes_tooltip, ); expect(popover.textContent).toContain(DOC_TYPES[0]); expect(popover.textContent).toContain(DOC_TYPES[1]); @@ -832,7 +832,7 @@ describe("Context line component", () => { - + , ); const target = result.container.querySelector("#metadata_quality>span"); @@ -840,13 +840,13 @@ describe("Context line component", () => { await waitFor(() => { const popover = result.container.querySelector( - "#metadata-quality-popover" + "#metadata-quality-popover", ); expect(popover).not.toBeNull(); expect(popover.textContent).toEqual( storeObject.localization[ `${QUALITY}_metadata_quality_desc_${SERVICE}` - ] + ], ); }); }; From 158276c8ab8f776f4316490b9d37dceabfa39001 Mon Sep 17 00:00:00 2001 From: andrei Date: Fri, 12 Sep 2025 16:37:10 +0200 Subject: [PATCH 042/149] refactor: fixed tree mismatches in the Author component --- vis/js/templates/contextfeatures/Author.tsx | 2 +- vis/js/templates/contextfeatures/NumArticles.tsx | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/vis/js/templates/contextfeatures/Author.tsx b/vis/js/templates/contextfeatures/Author.tsx index 17c0c913b..f602a971d 100644 --- a/vis/js/templates/contextfeatures/Author.tsx +++ b/vis/js/templates/contextfeatures/Author.tsx @@ -15,7 +15,7 @@ export const Author: FC = memo(({ bioLabel, livingDates }) => ( {bioLabel ? ( - + {bioLabel} diff --git a/vis/js/templates/contextfeatures/NumArticles.tsx b/vis/js/templates/contextfeatures/NumArticles.tsx index 51290a385..522c493fb 100644 --- a/vis/js/templates/contextfeatures/NumArticles.tsx +++ b/vis/js/templates/contextfeatures/NumArticles.tsx @@ -19,7 +19,6 @@ export const NumArticles: FC = ({ modifierLimit, isStreamgraph, }) => { - console.log("openAccessArticlesCount: ", openAccessArticlesCount); let displayText: ReactNode | string = `${articlesCount} ${articlesCountLabel}`; From 3680b62ac652f575446cef33b0f55a4fbb513ef4 Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 15 Sep 2025 15:02:55 +0200 Subject: [PATCH 043/149] refactor: removed old type declarations for images --- vis/types/declarations/images.d.ts | 34 ------------------------------ 1 file changed, 34 deletions(-) delete mode 100644 vis/types/declarations/images.d.ts diff --git a/vis/types/declarations/images.d.ts b/vis/types/declarations/images.d.ts deleted file mode 100644 index b7d7ed486..000000000 --- a/vis/types/declarations/images.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -declare module "*.png" { - const value: string; - export default value; -} - -declare module "*.jpg" { - const value: string; - export default value; -} - -declare module "*.jpeg" { - const value: string; - export default value; -} - -declare module "*.gif" { - const value: string; - export default value; -} - -declare module "*.svg" { - const content: any; - export default content; -} - -declare module "*.webp" { - const value: string; - export default value; -} - -declare module "*.avif" { - const value: string; - export default value; -} From 0fa88f48803a46a6a489513b125b6148017bb0cd Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 15 Sep 2025 16:16:06 +0200 Subject: [PATCH 044/149] feat: basic state types --- vis/js/types/index.ts | 3 ++ vis/js/types/models/area.ts | 17 +++++++ vis/js/types/state/index.ts | 36 ++++++++++++++ vis/js/types/state/slices/areas.ts | 14 ++++++ vis/js/types/state/slices/bubble-order.ts | 4 ++ vis/js/types/state/slices/chart.ts | 6 +++ vis/js/types/state/slices/context-line.ts | 36 ++++++++++++++ vis/js/types/state/slices/data.ts | 17 +++++++ vis/js/types/state/slices/heading.ts | 9 ++++ vis/js/types/state/slices/index.ts | 18 +++++++ vis/js/types/state/slices/list.ts | 22 +++++++++ vis/js/types/state/slices/misc.ts | 9 ++++ vis/js/types/state/slices/modal-info-type.ts | 1 + vis/js/types/state/slices/modals.ts | 50 ++++++++++++++++++++ vis/js/types/state/slices/paper-order.ts | 5 ++ vis/js/types/state/slices/paper.ts | 8 ++++ vis/js/types/state/slices/query-advanced.ts | 6 +++ vis/js/types/state/slices/query.ts | 6 +++ vis/js/types/state/slices/selected-bubble.ts | 6 +++ vis/js/types/state/slices/streamgraph.ts | 6 +++ vis/js/types/state/slices/toolbar.ts | 8 ++++ vis/js/types/state/slices/tracking.ts | 3 ++ 22 files changed, 290 insertions(+) create mode 100644 vis/js/types/models/area.ts create mode 100644 vis/js/types/state/index.ts create mode 100644 vis/js/types/state/slices/areas.ts create mode 100644 vis/js/types/state/slices/bubble-order.ts create mode 100644 vis/js/types/state/slices/chart.ts create mode 100644 vis/js/types/state/slices/context-line.ts create mode 100644 vis/js/types/state/slices/data.ts create mode 100644 vis/js/types/state/slices/heading.ts create mode 100644 vis/js/types/state/slices/index.ts create mode 100644 vis/js/types/state/slices/list.ts create mode 100644 vis/js/types/state/slices/misc.ts create mode 100644 vis/js/types/state/slices/modal-info-type.ts create mode 100644 vis/js/types/state/slices/modals.ts create mode 100644 vis/js/types/state/slices/paper-order.ts create mode 100644 vis/js/types/state/slices/paper.ts create mode 100644 vis/js/types/state/slices/query-advanced.ts create mode 100644 vis/js/types/state/slices/query.ts create mode 100644 vis/js/types/state/slices/selected-bubble.ts create mode 100644 vis/js/types/state/slices/streamgraph.ts create mode 100644 vis/js/types/state/slices/toolbar.ts create mode 100644 vis/js/types/state/slices/tracking.ts diff --git a/vis/js/types/index.ts b/vis/js/types/index.ts index 1454e8c6a..f015e486c 100644 --- a/vis/js/types/index.ts +++ b/vis/js/types/index.ts @@ -4,6 +4,9 @@ export { Author } from "./models/author"; export { Context } from "./visualization/context"; export { ServiceType } from "./visualization/service"; export { VisualizationTypes } from "./visualization/visualization-types"; +export { Area } from "./models/area"; +export { ContextLine } from "./state/slices/context-line"; +export { State } from "./state"; export { Paper, OrcidPaper, diff --git a/vis/js/types/models/area.ts b/vis/js/types/models/area.ts new file mode 100644 index 000000000..164e9dbb8 --- /dev/null +++ b/vis/js/types/models/area.ts @@ -0,0 +1,17 @@ +import { PubmedPaper, BasePaper, OrcidPaper } from "../models/paper"; + +export interface Area { + area_uri: number; + num_readers: number; + origR: number; + origX: number; + origY: number; + papers: PubmedPaper[] | BasePaper[] | OrcidPaper[]; + r: number; + title: string; + x: number; + y: number; + zoomedR: number; + zoomedX: number; + zoomedY: number; +} diff --git a/vis/js/types/state/index.ts b/vis/js/types/state/index.ts new file mode 100644 index 000000000..2c2c09e28 --- /dev/null +++ b/vis/js/types/state/index.ts @@ -0,0 +1,36 @@ +import { Localization } from "../../i18n/localization"; +import { Author } from "../models/author"; +import { ServiceType } from "../visualization/service"; +import * as slices from "./slices"; + +export interface State { + animation: null; + areas: slices.Areas; + author: Author; + bubbleOrder: slices.BubbleOrder; + chart: slices.Chart; + chartType: "knowledgeMap" | "streamgraph"; + contextLine: slices.ContextLine; + data: slices.Data; + heading: slices.Heading; + highlightedBubble: null; + hyphenationLang: "en"; + isCovis: boolean; + list: slices.List; + localization: Localization; + misc: slices.Misc; + modalInfoType: slices.ModalInfoType; + modals: slices.Modals; + paper: slices.Paper; + paperOrder: slices.PaperOrder; + q_advanced: slices.QueryAdvanced; + query: slices.Query; + selectedBubble: slices.SelectedBubble; + selectedPaper: null; + service: ServiceType; + streamgraph: slices.Streamgraph; + timespan: string; + toolbar: slices.Toolbar; + tracking: slices.Tracking; + zoom: true; +} diff --git a/vis/js/types/state/slices/areas.ts b/vis/js/types/state/slices/areas.ts new file mode 100644 index 000000000..ffc002219 --- /dev/null +++ b/vis/js/types/state/slices/areas.ts @@ -0,0 +1,14 @@ +import { Area } from "../../models/area"; + +export interface Areas { + list: Area[]; + options: { + bubbleMaxScale: number; + bubbleMinScale: number; + maxAreaSize: number; + minAreaSize: number; + referenceSize: number; + zoomFactor: number; + }; + size: number; +} diff --git a/vis/js/types/state/slices/bubble-order.ts b/vis/js/types/state/slices/bubble-order.ts new file mode 100644 index 000000000..ce76842c8 --- /dev/null +++ b/vis/js/types/state/slices/bubble-order.ts @@ -0,0 +1,4 @@ +export interface BubbleOrder { + hoveredBubble: number | null; + order: number[] | []; +} diff --git a/vis/js/types/state/slices/chart.ts b/vis/js/types/state/slices/chart.ts new file mode 100644 index 000000000..35cecd7a2 --- /dev/null +++ b/vis/js/types/state/slices/chart.ts @@ -0,0 +1,6 @@ +export interface Chart { + height: number; + streamHeight: number; + streamWidth: number; + width: number; +} diff --git a/vis/js/types/state/slices/context-line.ts b/vis/js/types/state/slices/context-line.ts new file mode 100644 index 000000000..99d8d9b8d --- /dev/null +++ b/vis/js/types/state/slices/context-line.ts @@ -0,0 +1,36 @@ +import { ServiceType } from "../../visualization/service"; + +export interface ContextLine { + articlesCount: number; + author: ContextLineAuthorData; + contentProvider: undefined; + dataSource: string; + datasetCount: null; + documentLang: string[]; + documentTypes: string[]; + excludeDateFilters: null; + funder: null; + isResearcherDetailsEnabled: unknown; + isResearcherMetricsEnabled: unknown; + legacySearchLanguage: null; + metadataQuality: string; + modifier: string; + modifierLimit: number; + openAccessCount: null; + paperCount: null; + projectRuntime: null; + searchLanguage: null; + service: ServiceType; + show: boolean; + showAuthor: boolean; + showDataSource: boolean; + showLanguage: boolean; + show_h_index: boolean; + timestamp: null; +} + +interface ContextLineAuthorData { + id: null; + imageLink: null; + livingDates: null; +} diff --git a/vis/js/types/state/slices/data.ts b/vis/js/types/state/slices/data.ts new file mode 100644 index 000000000..26bd1c840 --- /dev/null +++ b/vis/js/types/state/slices/data.ts @@ -0,0 +1,17 @@ +export interface Data { + size: number; + list: unknown[]; + options: Options; +} + +interface Options { + isStreamgraph: boolean; + maxDiameterSize: number; + minDiameterSize: number; + paperHeightFactor: number; + paperMaxScale: number; + paperMinScale: number; + paperWidthFactor: number; + referenceSize: number; + visualizationId: string; +} diff --git a/vis/js/types/state/slices/heading.ts b/vis/js/types/state/slices/heading.ts new file mode 100644 index 000000000..71b90d24b --- /dev/null +++ b/vis/js/types/state/slices/heading.ts @@ -0,0 +1,9 @@ +export interface Heading { + acronym: unknown; + customTitle: unknown; + presetTitle: string; + projectId: unknown; + title: unknown; + titleLabelType: string; + titleStyle: string; +} diff --git a/vis/js/types/state/slices/index.ts b/vis/js/types/state/slices/index.ts new file mode 100644 index 000000000..b4d7ee838 --- /dev/null +++ b/vis/js/types/state/slices/index.ts @@ -0,0 +1,18 @@ +export { Areas } from "./areas"; +export { BubbleOrder } from "./bubble-order"; +export { Chart } from "./chart"; +export { ContextLine } from "./context-line"; +export { Data } from "./data"; +export { Heading } from "./heading"; +export { List } from "./list"; +export { Misc } from "./misc"; +export { ModalInfoType } from "./modal-info-type"; +export { Modals } from "./modals"; +export { Paper } from "./paper"; +export { PaperOrder } from "./paper-order"; +export { Query } from "./query"; +export { QueryAdvanced } from "./query-advanced"; +export { SelectedBubble } from "./selected-bubble"; +export { Streamgraph } from "./streamgraph"; +export { Toolbar } from "./toolbar"; +export { Tracking } from "./tracking"; diff --git a/vis/js/types/state/slices/list.ts b/vis/js/types/state/slices/list.ts new file mode 100644 index 000000000..051bef4b9 --- /dev/null +++ b/vis/js/types/state/slices/list.ts @@ -0,0 +1,22 @@ +export interface List { + baseUnit: string; + citePapers: boolean; + defaultSort: string; + disableClicks: boolean; + exportPapers: boolean; + filterField: null; + filterOptions: string[]; + filterValue: string; + height: number; + hideUnselectedKeywords: boolean; + isContentBased: boolean; + noCitationDoctypes: string[]; + searchValue: string; + show: boolean; + showDocumentType: boolean; + showFilter: boolean; + showKeywords: boolean; + showMetrics: unknown; + sortOptions: string[]; + sortValue: string; +} diff --git a/vis/js/types/state/slices/misc.ts b/vis/js/types/state/slices/misc.ts new file mode 100644 index 000000000..382e61020 --- /dev/null +++ b/vis/js/types/state/slices/misc.ts @@ -0,0 +1,9 @@ +export interface Misc { + isEmbedded: boolean; + isLoading: boolean; + showCreatedByViper: boolean; + showLoading: boolean; + renderList: boolean; + renderMap: boolean; + visTag: "visualization"; +} diff --git a/vis/js/types/state/slices/modal-info-type.ts b/vis/js/types/state/slices/modal-info-type.ts new file mode 100644 index 000000000..509da10fc --- /dev/null +++ b/vis/js/types/state/slices/modal-info-type.ts @@ -0,0 +1 @@ +export interface ModalInfoType {} diff --git a/vis/js/types/state/slices/modals.ts b/vis/js/types/state/slices/modals.ts new file mode 100644 index 000000000..5b4c5d666 --- /dev/null +++ b/vis/js/types/state/slices/modals.ts @@ -0,0 +1,50 @@ +import { ServiceType } from "../../visualization/service"; + +export interface Modals { + FAQsUrl: string; + FAQsUrlStr: string; + apiProperties: ApiProperties; + citedPaper: null; + exportedPaper: null; + infoParams: InfoParams; + openCitationModal: boolean; + openEmbedModal: boolean; + openInfoModal: boolean; + openResearcherMetricsModal: boolean; + openResearcherModal: boolean; + openViperEditModal: boolean; + previewedPaper: null; + reloadLastUpdate: unknown; + showCitationButton: boolean; + showEmailButton: boolean; + showEmbedButton: boolean; + showFAQsButton: boolean; + showPDFPreview: boolean; + showReloadButton: boolean; + showShareButton: boolean; + showTwitterButton: boolean; + showViperEditButton: boolean; + twitterHashtags: string; + useViewer: boolean; + viperEditObjID: unknown; +} + +interface ApiProperties { + headstartPath: string; + persistenceBackend: unknown; + sheetID: null; +} + +interface InfoParams { + id: string; + query: string; + service: ServiceType; + timestamp: string; + from: string; + to: string; + document_types: string[]; + sorting: string; + min_descsize: string; + params: unknown; + lang_id: string[]; +} diff --git a/vis/js/types/state/slices/paper-order.ts b/vis/js/types/state/slices/paper-order.ts new file mode 100644 index 000000000..ec798fb39 --- /dev/null +++ b/vis/js/types/state/slices/paper-order.ts @@ -0,0 +1,5 @@ +export interface PaperOrder { + hoveredPaper: number | null; + order: string[]; + enlargeFactor: number; +} diff --git a/vis/js/types/state/slices/paper.ts b/vis/js/types/state/slices/paper.ts new file mode 100644 index 000000000..4e904962b --- /dev/null +++ b/vis/js/types/state/slices/paper.ts @@ -0,0 +1,8 @@ +export interface Paper { + showSocialMedia: boolean; + showReferences: boolean; + showCitations: boolean; + showPubmedCitations: boolean; + showReaders: boolean; + showTweets: boolean; +} diff --git a/vis/js/types/state/slices/query-advanced.ts b/vis/js/types/state/slices/query-advanced.ts new file mode 100644 index 000000000..bb7f6c769 --- /dev/null +++ b/vis/js/types/state/slices/query-advanced.ts @@ -0,0 +1,6 @@ +export interface QueryAdvanced { + text: string | null; + parsedTerms: string[]; + highlightTerms: boolean; + useLookBehind: boolean; +} diff --git a/vis/js/types/state/slices/query.ts b/vis/js/types/state/slices/query.ts new file mode 100644 index 000000000..75fd03b77 --- /dev/null +++ b/vis/js/types/state/slices/query.ts @@ -0,0 +1,6 @@ +export interface Query { + text: string; + parsedTerms: string[]; + highlightTerms: boolean; + useLookBehind: boolean; +} diff --git a/vis/js/types/state/slices/selected-bubble.ts b/vis/js/types/state/slices/selected-bubble.ts new file mode 100644 index 000000000..ad1540435 --- /dev/null +++ b/vis/js/types/state/slices/selected-bubble.ts @@ -0,0 +1,6 @@ +export interface SelectedBubble { + title: string; + uri: number; + color: unknown; + docIds: unknown; +} diff --git a/vis/js/types/state/slices/streamgraph.ts b/vis/js/types/state/slices/streamgraph.ts new file mode 100644 index 000000000..50ab53e8a --- /dev/null +++ b/vis/js/types/state/slices/streamgraph.ts @@ -0,0 +1,6 @@ +export interface Streamgraph { + data: string; + colors: string[]; + visTag: "visualization"; + streams: unknown; +} diff --git a/vis/js/types/state/slices/toolbar.ts b/vis/js/types/state/slices/toolbar.ts new file mode 100644 index 000000000..dd8565ff6 --- /dev/null +++ b/vis/js/types/state/slices/toolbar.ts @@ -0,0 +1,8 @@ +export interface Toolbar { + scaleBaseUnit: boolean; + scaleExplanations: boolean; + scaleLabels: boolean; + showScaleToolbar: boolean; + scaleOptions: unknown; + scaleValue: unknown; +} diff --git a/vis/js/types/state/slices/tracking.ts b/vis/js/types/state/slices/tracking.ts new file mode 100644 index 000000000..7f900a433 --- /dev/null +++ b/vis/js/types/state/slices/tracking.ts @@ -0,0 +1,3 @@ +export interface Tracking { + trackMouseOver: false; +} From d92759bcab6782bb400d4aa9510793cc923b1f18 Mon Sep 17 00:00:00 2001 From: andrei Date: Tue, 16 Sep 2025 11:35:06 +0200 Subject: [PATCH 045/149] refactor: decomposition of state type --- vis/js/types/state/index.ts | 4 ++-- vis/js/types/state/slices/chartType.ts | 1 + vis/js/types/state/slices/index.ts | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 vis/js/types/state/slices/chartType.ts diff --git a/vis/js/types/state/index.ts b/vis/js/types/state/index.ts index 2c2c09e28..c37e9555e 100644 --- a/vis/js/types/state/index.ts +++ b/vis/js/types/state/index.ts @@ -9,12 +9,12 @@ export interface State { author: Author; bubbleOrder: slices.BubbleOrder; chart: slices.Chart; - chartType: "knowledgeMap" | "streamgraph"; + chartType: slices.ChartTypes; contextLine: slices.ContextLine; data: slices.Data; heading: slices.Heading; highlightedBubble: null; - hyphenationLang: "en"; + hyphenationLang: string; isCovis: boolean; list: slices.List; localization: Localization; diff --git a/vis/js/types/state/slices/chartType.ts b/vis/js/types/state/slices/chartType.ts new file mode 100644 index 000000000..f35face0c --- /dev/null +++ b/vis/js/types/state/slices/chartType.ts @@ -0,0 +1 @@ +export type ChartTypes = "knowledgeMap" | "streamgraph"; diff --git a/vis/js/types/state/slices/index.ts b/vis/js/types/state/slices/index.ts index b4d7ee838..6692c9b82 100644 --- a/vis/js/types/state/slices/index.ts +++ b/vis/js/types/state/slices/index.ts @@ -16,3 +16,4 @@ export { SelectedBubble } from "./selected-bubble"; export { Streamgraph } from "./streamgraph"; export { Toolbar } from "./toolbar"; export { Tracking } from "./tracking"; +export { ChartTypes } from "./chartType"; From e340a78787abbd463bde55450b98b8dbec83eaed Mon Sep 17 00:00:00 2001 From: andrei Date: Tue, 16 Sep 2025 13:13:23 +0200 Subject: [PATCH 046/149] feat: state types in the TitleContext component --- vis/js/components/TitleContext.tsx | 29 ++++++++++------------- vis/js/templates/AuthorImage.tsx | 2 +- vis/js/types/state/slices/context-line.ts | 2 +- 3 files changed, 15 insertions(+), 18 deletions(-) diff --git a/vis/js/components/TitleContext.tsx b/vis/js/components/TitleContext.tsx index 06912c7e4..1a9f8e770 100644 --- a/vis/js/components/TitleContext.tsx +++ b/vis/js/components/TitleContext.tsx @@ -1,34 +1,31 @@ -import React from "react"; +import React, { FC } from "react"; import { connect } from "react-redux"; - import SubdisciplineTitle from "../templates/SubdisciplineTitle"; import AuthorImage from "../templates/AuthorImage"; -import { ServiceType } from "../types"; +import { ServiceType, State } from "../types"; interface TitleContextProps { showAuthor: boolean; - authorImage: string; + authorImage: string | null; orcidId: string; service: ServiceType; } -const TitleContext = ({ +const TitleContext: FC = ({ showAuthor, authorImage, orcidId, service, -}: TitleContextProps) => { - return ( -
- {showAuthor && ( - - )} - -
- ); -}; +}) => ( +
+ {showAuthor && ( + + )} + +
+); -const mapStateToProps = (state: any) => ({ +const mapStateToProps = (state: State) => ({ showAuthor: state.contextLine.showAuthor, authorImage: state.contextLine.author.imageLink, orcidId: state.author.orcid_id, diff --git a/vis/js/templates/AuthorImage.tsx b/vis/js/templates/AuthorImage.tsx index 1ff680a38..f62d74dd0 100644 --- a/vis/js/templates/AuthorImage.tsx +++ b/vis/js/templates/AuthorImage.tsx @@ -5,7 +5,7 @@ import { ServiceType } from "../types"; export interface AuthorImageProps { orcidId: string; service: ServiceType; - url?: string; + url: string | null; } const AuthorImage: FC = ({ service, orcidId, url = "" }) => { diff --git a/vis/js/types/state/slices/context-line.ts b/vis/js/types/state/slices/context-line.ts index 99d8d9b8d..7caf6455e 100644 --- a/vis/js/types/state/slices/context-line.ts +++ b/vis/js/types/state/slices/context-line.ts @@ -31,6 +31,6 @@ export interface ContextLine { interface ContextLineAuthorData { id: null; - imageLink: null; + imageLink: string | null; livingDates: null; } From 95aa128ee07d3953b0787f44f9c8872da6a48ec2 Mon Sep 17 00:00:00 2001 From: andrei Date: Tue, 16 Sep 2025 14:28:13 +0200 Subject: [PATCH 047/149] feat: types for the Toolbar component --- vis/js/actions/index.ts | 16 ++-- vis/js/components/Toolbar.tsx | 83 +++++++++++++-------- vis/js/templates/ScaleToolbar.tsx | 21 ++++-- vis/js/types/actions/scale-map.ts | 9 +++ vis/js/types/index.ts | 23 ++++-- vis/js/types/state/slices/toolbar.ts | 33 ++++++-- vis/js/types/visualization/scale-options.ts | 5 ++ 7 files changed, 136 insertions(+), 54 deletions(-) create mode 100644 vis/js/types/actions/scale-map.ts create mode 100644 vis/js/types/visualization/scale-options.ts diff --git a/vis/js/actions/index.ts b/vis/js/actions/index.ts index 3c3cc4863..d6f0658d0 100644 --- a/vis/js/actions/index.ts +++ b/vis/js/actions/index.ts @@ -1,4 +1,4 @@ -import { Config, Paper } from "../types"; +import { Config, Paper, ScaleMapAction, ScaleOptions } from "../types"; /** * All actions in this array are not delayed when the map is animated. @@ -28,7 +28,7 @@ export const zoomIn = ( callback: any, alreadyZoomed = false, isFromBackButton = false, - selectedPaperData: Paper | null = null + selectedPaperData: Paper | null = null, ) => ({ type: "ZOOM_IN", selectedAreaData, @@ -40,7 +40,7 @@ export const zoomIn = ( export const zoomOut = ( callback: (() => void) | null, - isFromBackButton = false + isFromBackButton = false, ) => ({ type: "ZOOM_OUT", callback, @@ -66,7 +66,7 @@ export const initializeStore = ( streamHeight: number, listHeight: number, scalingFactors: any, - author: any + author: any, ) => ({ type: "INITIALIZE", configObject, @@ -174,11 +174,11 @@ export const closeResearcherMetricsModal = () => ({ }); export const scaleMap = ( - value: any, - baseUnit: string, + value: ScaleOptions, + baseUnit: string | undefined, contentBased: boolean, - sort: string -) => ({ + sort: string | undefined, +): ScaleMapAction => ({ type: "SCALE", value, baseUnit, diff --git a/vis/js/components/Toolbar.tsx b/vis/js/components/Toolbar.tsx index 7d98bd738..517efbab2 100644 --- a/vis/js/components/Toolbar.tsx +++ b/vis/js/components/Toolbar.tsx @@ -1,11 +1,18 @@ -// @ts-nocheck -import React from "react"; +import React, { FC } from "react"; import { connect } from "react-redux"; import ScaleToolbar from "../templates/ScaleToolbar"; +import { scaleMap } from "../actions"; +import { Dispatch } from "redux"; +import { + State, + Toolbar as ToolbarStateType, + ScaleOptions, + ScaleMapAction, +} from "../types"; -import { openInfoModal, scaleMap } from "../actions"; +interface ToolbarProps extends ToolbarStateType, MapDispatchProps {} -const Toolbar = ({ +const Toolbar: FC = ({ showScaleToolbar, scaleOptions, scaleLabels, @@ -15,33 +22,43 @@ const Toolbar = ({ showCredit, onScaleChange, }) => { - if (showScaleToolbar) { - const handleScaleChange = (newScaleBy: string) => { - const newBaseUnit = scaleBaseUnit[newScaleBy]; - const isContentBased = newScaleBy === "content_based"; - const newSort = isContentBased ? undefined : newBaseUnit; - - onScaleChange(newScaleBy, newBaseUnit, isContentBased, newSort); - }; - - return ( -
- -
- ); + if ( + !showScaleToolbar || + !scaleBaseUnit || + !scaleLabels || + !scaleExplanations || + !scaleValue + ) { + return null; } - return null; + const handleScaleChange = (newScaleBy: ScaleOptions) => { + // If scale is equal to “content_based”, this means that the scale settings need to be reset. + // This method is handled separately from the others (TODO: can be refactored in feature). + if (newScaleBy === "content_based") { + onScaleChange(newScaleBy, undefined, true, undefined); + return; + } + + const newBaseUnit = scaleBaseUnit[newScaleBy]; + onScaleChange(newScaleBy, newBaseUnit, false, newBaseUnit); + }; + + return ( +
+ +
+ ); }; -const mapStateToProps = (state) => ({ +const mapStateToProps = (state: State) => ({ showScaleToolbar: state.toolbar.showScaleToolbar, scaleOptions: state.toolbar.scaleOptions, scaleLabels: state.toolbar.scaleLabels, @@ -51,9 +68,15 @@ const mapStateToProps = (state) => ({ showCredit: state.misc.showCreatedByViper, }); -const mapDispatchToProps = (dispatch) => ({ - onScaleChange: (value, baseUnit, contentBased, sort) => - dispatch(scaleMap(value, baseUnit, contentBased, sort)), +const mapDispatchToProps = (dispatch: Dispatch) => ({ + onScaleChange: ( + value: ScaleOptions, + baseUnit: string | undefined, + contentBased: boolean, + sort: string | undefined, + ) => dispatch(scaleMap(value, baseUnit, contentBased, sort)), }); +type MapDispatchProps = ReturnType; + export default connect(mapStateToProps, mapDispatchToProps)(Toolbar); diff --git a/vis/js/templates/ScaleToolbar.tsx b/vis/js/templates/ScaleToolbar.tsx index 345847e4e..adb879532 100644 --- a/vis/js/templates/ScaleToolbar.tsx +++ b/vis/js/templates/ScaleToolbar.tsx @@ -1,12 +1,19 @@ -// @ts-nocheck -import React from "react"; +import React, { FC } from "react"; import { DropdownButton, MenuItem } from "react-bootstrap"; - import { useLocalizationContext } from "../components/LocalizationProvider"; import useMatomo from "../utils/useMatomo"; -import HoverPopover from "./HoverPopover"; +import { ScaleOptions, ScaleExplanations, ScaleLabels } from "../types"; + +interface ScaleToolbar { + value: ScaleOptions; + options: ScaleOptions[] | []; + labels: ScaleLabels; + explanations: ScaleExplanations; + showCredit: boolean; + onChange: (newSortByValue: ScaleOptions) => void; +} -const ScaleToolbar = ({ +const ScaleToolbar: FC = ({ value, options, labels, @@ -16,7 +23,8 @@ const ScaleToolbar = ({ }) => { const localization = useLocalizationContext(); const { trackEvent } = useMatomo(); - const handleScaleChange = (id) => { + + const handleScaleChange = (id: ScaleOptions) => { onChange(id); trackEvent("Added components", "Rescale map", labels[id]); }; @@ -63,6 +71,7 @@ const ScaleToolbar = ({ className="scale_item" key={key} eventKey={key} + // @ts-ignore onSelect={handleScaleChange} active={key === value} > diff --git a/vis/js/types/actions/scale-map.ts b/vis/js/types/actions/scale-map.ts new file mode 100644 index 000000000..caebefa7e --- /dev/null +++ b/vis/js/types/actions/scale-map.ts @@ -0,0 +1,9 @@ +import { ScaleOptions } from "../index"; + +export interface ScaleMapAction { + type: "SCALE"; + value: ScaleOptions; + contentBased: boolean; + baseUnit?: string; + sort?: string; +} diff --git a/vis/js/types/index.ts b/vis/js/types/index.ts index f015e486c..0352b3d77 100644 --- a/vis/js/types/index.ts +++ b/vis/js/types/index.ts @@ -1,12 +1,9 @@ export { PropsWithChildren } from "./components-props"; + export { Config } from "./configs/config"; + export { Author } from "./models/author"; -export { Context } from "./visualization/context"; -export { ServiceType } from "./visualization/service"; -export { VisualizationTypes } from "./visualization/visualization-types"; export { Area } from "./models/area"; -export { ContextLine } from "./state/slices/context-line"; -export { State } from "./state"; export { Paper, OrcidPaper, @@ -14,3 +11,19 @@ export { PubmedPaper, CommonPaperDataForAllIntegrations, } from "./models/paper"; + +export { Context } from "./visualization/context"; +export { ServiceType } from "./visualization/service"; +export { VisualizationTypes } from "./visualization/visualization-types"; +export { ScaleOptions } from "./visualization/scale-options"; + +export { ContextLine } from "./state/slices/context-line"; + +export { State } from "./state"; +export { + Toolbar, + ScaleExplanations, + ScaleLabels, +} from "./state/slices/toolbar"; + +export { ScaleMapAction } from "./actions/scale-map"; diff --git a/vis/js/types/state/slices/toolbar.ts b/vis/js/types/state/slices/toolbar.ts index dd8565ff6..4526677c7 100644 --- a/vis/js/types/state/slices/toolbar.ts +++ b/vis/js/types/state/slices/toolbar.ts @@ -1,8 +1,31 @@ +import { ScaleOptions } from "../../index"; + export interface Toolbar { - scaleBaseUnit: boolean; - scaleExplanations: boolean; - scaleLabels: boolean; showScaleToolbar: boolean; - scaleOptions: unknown; - scaleValue: unknown; + showCredit: boolean; + scaleValue?: ScaleOptions; + scaleOptions: ScaleOptions[] | []; + scaleBaseUnit?: BaseUnit; + scaleExplanations?: ScaleExplanations; + scaleLabels?: ScaleLabels; +} + +export interface ScaleLabels { + citations: string; + cited_by_accounts_count: string; + content_based: string; + references: string; +} + +export interface ScaleExplanations { + citations: string; + cited_by_accounts_count: string; + content_based: string; + references: string; +} + +interface BaseUnit { + citations: string; + cited_by_accounts_count: string; + references: string; } diff --git a/vis/js/types/visualization/scale-options.ts b/vis/js/types/visualization/scale-options.ts new file mode 100644 index 000000000..e3342f7f1 --- /dev/null +++ b/vis/js/types/visualization/scale-options.ts @@ -0,0 +1,5 @@ +export type ScaleOptions = + | "content_based" + | "citations" + | "cited_by_accounts_count" + | "references"; From c56ba4f230faabd27f8bee35369c302ec0b2e65f Mon Sep 17 00:00:00 2001 From: andrei Date: Tue, 16 Sep 2025 16:51:53 +0200 Subject: [PATCH 048/149] feat: types for the List component --- vis/js/actions/index.ts | 9 ++- vis/js/components/FilterSort.tsx | 11 ++-- vis/js/components/List.tsx | 25 +++++--- vis/js/components/ListEntries.tsx | 36 ++++++++--- .../components/filtersort/FilterDropdown.ts | 20 ++++--- vis/js/components/filtersort/SearchBox.ts | 11 ++-- vis/js/components/filtersort/SortDropdown.ts | 14 ++--- vis/js/templates/ListToggle.tsx | 23 +++++--- .../templates/filtersort/BasicFilterSort.tsx | 9 ++- vis/js/templates/filtersort/SearchBox.tsx | 28 ++++++--- vis/js/templates/filtersort/SortDropdown.tsx | 56 +++++++++++------- .../filtersort/StandardFilterSort.tsx | 13 ++-- vis/js/templates/listentry/Abstract.tsx | 14 ++--- vis/js/templates/listentry/AccessIcons.tsx | 21 +++---- vis/js/templates/listentry/Area.tsx | 22 ++++--- vis/js/templates/listentry/Citations.tsx | 9 ++- vis/js/templates/listentry/Details.tsx | 52 ++++++++-------- vis/js/templates/listentry/DocTypesRow.tsx | 11 ++-- vis/js/templates/listentry/DocumentType.tsx | 7 +-- vis/js/templates/listentry/EntryBacklink.tsx | 9 +-- vis/js/templates/listentry/Keywords.tsx | 10 ++-- vis/js/templates/listentry/Link.tsx | 10 +--- vis/js/templates/listentry/OrcidMetrics.tsx | 26 +++++--- vis/js/templates/listentry/PaperButtons.tsx | 18 +++--- .../templates/listentry/StandardListEntry.tsx | 59 +++++++++++-------- vis/js/templates/listentry/Title.tsx | 25 ++++---- vis/js/types/index.ts | 7 +++ vis/js/types/models/area.ts | 4 +- vis/js/types/models/paper.ts | 6 +- vis/js/types/state/index.ts | 4 +- vis/js/types/state/slices/data.ts | 4 +- vis/js/types/state/slices/index.ts | 3 +- vis/js/types/state/slices/list.ts | 13 ++-- vis/js/types/state/slices/selected-bubble.ts | 2 +- vis/js/types/state/slices/selected-paper.ts | 3 + vis/js/types/state/slices/tracking.ts | 2 +- vis/js/utils/debounce.ts | 5 +- vis/js/utils/eventhandlers.ts | 33 ++++++----- 38 files changed, 367 insertions(+), 267 deletions(-) create mode 100644 vis/js/types/state/slices/selected-paper.ts diff --git a/vis/js/actions/index.ts b/vis/js/actions/index.ts index d6f0658d0..67d077960 100644 --- a/vis/js/actions/index.ts +++ b/vis/js/actions/index.ts @@ -1,4 +1,9 @@ -import { Config, Paper, ScaleMapAction, ScaleOptions } from "../types"; +import { + AllPossiblePapersType, + Config, + ScaleMapAction, + ScaleOptions, +} from "../types"; /** * All actions in this array are not delayed when the map is animated. @@ -28,7 +33,7 @@ export const zoomIn = ( callback: any, alreadyZoomed = false, isFromBackButton = false, - selectedPaperData: Paper | null = null, + selectedPaperData: AllPossiblePapersType | null = null, ) => ({ type: "ZOOM_IN", selectedAreaData, diff --git a/vis/js/components/FilterSort.tsx b/vis/js/components/FilterSort.tsx index b9839506a..5bac4826c 100644 --- a/vis/js/components/FilterSort.tsx +++ b/vis/js/components/FilterSort.tsx @@ -1,17 +1,16 @@ -// @ts-nocheck -import React from "react"; +import React, { FC } from "react"; import { connect } from "react-redux"; - import StandardFilterSort from "../templates/filtersort/StandardFilterSort"; import BasicFilterSort from "../templates/filtersort/BasicFilterSort"; +import { State } from "../types"; export interface FilterSortProps { showList: boolean; showFilter: boolean; - color: string; + color: string | null; } -const FilterSort = ({ showList, showFilter, color }: FilterSortProps) => { +const FilterSort: FC = ({ showList, showFilter, color }) => { if (showFilter) { return ; } @@ -19,7 +18,7 @@ const FilterSort = ({ showList, showFilter, color }: FilterSortProps) => { return ; }; -const mapStateToProps = (state) => ({ +const mapStateToProps = (state: State) => ({ showList: state.list.show, showFilter: state.list.showFilter, color: state.selectedBubble ? state.selectedBubble.color : null, diff --git a/vis/js/components/List.tsx b/vis/js/components/List.tsx index af6aa873b..98f5a011a 100644 --- a/vis/js/components/List.tsx +++ b/vis/js/components/List.tsx @@ -1,15 +1,26 @@ -// @ts-nocheck - -import React from "react"; +import React, { FC } from "react"; import { connect } from "react-redux"; - import { filterData, sortData } from "../utils/data"; import { STREAMGRAPH_MODE } from "../reducers/chartType"; import ListToggle from "../templates/ListToggle"; import FilterSort from "./FilterSort"; -import ListEntries from "./ListEntries"; +import ListEntries, { + FilterSettingsData, + SearchSettingsData, +} from "./ListEntries"; +import { AllPossiblePapersType, SortValuesType, State } from "../types"; + +interface ListProps { + data: AllPossiblePapersType[]; + searchSettings: SearchSettingsData; + filterSettings: FilterSettingsData; + sortSettings: { + value: SortValuesType; + }; + fullWidth: boolean; +} -const List = ({ +const List: FC = ({ data, searchSettings, filterSettings, @@ -38,7 +49,7 @@ const List = ({ ); }; -const mapStateToProps = (state) => ({ +const mapStateToProps = (state: State) => ({ data: state.data.list, searchSettings: { value: state.list.searchValue, diff --git a/vis/js/components/ListEntries.tsx b/vis/js/components/ListEntries.tsx index 3c7651c0d..5bff6efee 100644 --- a/vis/js/components/ListEntries.tsx +++ b/vis/js/components/ListEntries.tsx @@ -1,18 +1,36 @@ -// @ts-nocheck - -import React from "react"; +import React, { FC } from "react"; import { connect } from "react-redux"; - import { useLocalizationContext } from "./LocalizationProvider"; - import { filterData } from "../utils/data"; import { STREAMGRAPH_MODE } from "../reducers/chartType"; - import EntriesWrapper from "./EntriesWrapper"; import StandardListEntry from "../templates/listentry/StandardListEntry"; +import { AllPossiblePapersType, FilterValuesType, State } from "../types"; + +export interface FilterSettingsData { + value: FilterValuesType; + field: null; + zoomed: boolean; + area: number | null; + isStreamgraph: boolean; + title: string | null; + docIds: unknown; +} + +export interface SearchSettingsData { + value: string; +} + +interface ListEntriesProps { + show: boolean; + displayedData: AllPossiblePapersType[]; + rawData: AllPossiblePapersType[]; + searchSettings: SearchSettingsData; + filterSettings: FilterSettingsData; + isStreamgraph: boolean; +} -const ListEntries = ({ - // data +const ListEntries: FC = ({ show, displayedData, rawData, @@ -56,7 +74,7 @@ const ListEntries = ({ ); }; -const mapStateToProps = (state) => ({ +const mapStateToProps = (state: State) => ({ show: state.list.show, rawData: state.data.list, searchSettings: { diff --git a/vis/js/components/filtersort/FilterDropdown.ts b/vis/js/components/filtersort/FilterDropdown.ts index 945d0e85e..347a6e5df 100644 --- a/vis/js/components/filtersort/FilterDropdown.ts +++ b/vis/js/components/filtersort/FilterDropdown.ts @@ -1,25 +1,31 @@ import { connect } from "react-redux"; - import { capitalize } from "../../utils/string"; - -import FilterDropdownTemplate, { FilterDropdownProps } from "../../templates/filtersort/FilterDropdown"; import { filter } from "../../actions"; +import { Dispatch } from "redux"; +import { State } from "../../types"; +import FilterDropdownTemplate, { + FilterDropdownProps, +} from "../../templates/filtersort/FilterDropdown"; -const mapStateToProps = (state: any): Omit => ({ +const mapStateToProps = ( + state: State, +): Omit => ({ value: state.list.filterValue, valueLabel: capitalize(state.localization[state.list.filterValue]), - options: state.list.filterOptions.map((id: string) => ({ + options: state.list.filterOptions.map((id) => ({ id, label: capitalize(state.localization[id]), })), label: state.localization.filter_by_label, }); -const mapDispatchToProps = (dispatch: any): Pick => ({ +const mapDispatchToProps = ( + dispatch: Dispatch, +): Pick => ({ handleChange: (id) => dispatch(filter(id)), }); export default connect( mapStateToProps, - mapDispatchToProps + mapDispatchToProps, )(FilterDropdownTemplate); diff --git a/vis/js/components/filtersort/SearchBox.ts b/vis/js/components/filtersort/SearchBox.ts index 1416fe447..219a1b1a8 100644 --- a/vis/js/components/filtersort/SearchBox.ts +++ b/vis/js/components/filtersort/SearchBox.ts @@ -1,17 +1,16 @@ -// @ts-nocheck - import { connect } from "react-redux"; - import SearchBoxTemplate from "../../templates/filtersort/SearchBox"; import { search } from "../../actions"; +import { Dispatch } from "redux"; +import { State } from "../../types"; -const mapStateToProps = (state) => ({ +const mapStateToProps = (state: State) => ({ value: state.list.searchValue, placeholder: state.localization.search_placeholder, }); -const mapDispatchToProps = (dispatch) => ({ - handleChange: (text) => dispatch(search(text)), +const mapDispatchToProps = (dispatch: Dispatch) => ({ + handleChange: (text: string) => dispatch(search(text)), }); export default connect(mapStateToProps, mapDispatchToProps)(SearchBoxTemplate); diff --git a/vis/js/components/filtersort/SortDropdown.ts b/vis/js/components/filtersort/SortDropdown.ts index 2e679ca4f..1de9098ee 100644 --- a/vis/js/components/filtersort/SortDropdown.ts +++ b/vis/js/components/filtersort/SortDropdown.ts @@ -1,13 +1,11 @@ -// @ts-nocheck - import { connect } from "react-redux"; - import { capitalize } from "../../utils/string"; - import SortDropdownTemplate from "../../templates/filtersort/SortDropdown"; import { sort } from "../../actions"; +import { Dispatch } from "redux"; +import { State } from "../../types"; -const mapStateToProps = (state) => ({ +const mapStateToProps = (state: State) => ({ value: state.list.sortValue, valueLabel: capitalize(state.localization[state.list.sortValue]), options: state.list.sortOptions.map((id) => ({ @@ -17,11 +15,11 @@ const mapStateToProps = (state) => ({ label: state.localization.sort_by_label, }); -const mapDispatchToProps = (dispatch) => ({ - handleChange: (id) => dispatch(sort(id)), +const mapDispatchToProps = (dispatch: Dispatch) => ({ + handleChange: (id: string) => dispatch(sort(id)), }); export default connect( mapStateToProps, - mapDispatchToProps + mapDispatchToProps, )(SortDropdownTemplate); diff --git a/vis/js/templates/ListToggle.tsx b/vis/js/templates/ListToggle.tsx index 8c7307e9a..cb628dce2 100644 --- a/vis/js/templates/ListToggle.tsx +++ b/vis/js/templates/ListToggle.tsx @@ -1,13 +1,22 @@ -// @ts-nocheck -import React from "react"; +import React, { FC } from "react"; import { connect } from "react-redux"; - import { toggleList } from "../actions"; import { useLocalizationContext } from "../components/LocalizationProvider"; import useMatomo from "../utils/useMatomo"; import { STREAMGRAPH_MODE } from "../reducers/chartType"; +import { Dispatch } from "redux"; +import { FilterValuesType, State } from "../types"; + +interface ListToggleProps { + appliedFilter: FilterValuesType; + docsNumber: number; + isShown: boolean; + isStreamgraph: boolean; + isZoomed: boolean; + onClick: () => void; +} -const ListToggle = ({ +const ListToggle: FC = ({ docsNumber, isShown, isZoomed, @@ -50,7 +59,6 @@ const ListToggle = ({ } return ( - // html template starts here
- // html template ends here ); }; -const mapStateToProps = (state) => ({ +const mapStateToProps = (state: State) => ({ isShown: state.list.show, isZoomed: state.zoom, isStreamgraph: state.chartType === STREAMGRAPH_MODE, appliedFilter: state.list.filterValue, }); -const mapDispatchToProps = (dispatch) => ({ +const mapDispatchToProps = (dispatch: Dispatch) => ({ onClick: () => dispatch(toggleList()), }); diff --git a/vis/js/templates/filtersort/BasicFilterSort.tsx b/vis/js/templates/filtersort/BasicFilterSort.tsx index e24ef1193..9c033c182 100644 --- a/vis/js/templates/filtersort/BasicFilterSort.tsx +++ b/vis/js/templates/filtersort/BasicFilterSort.tsx @@ -1,14 +1,13 @@ -import React from "react"; +import React, { FC } from "react"; import SearchBox from "../../components/filtersort/SearchBox"; import SortDropdown from "../../components/filtersort/SortDropdown"; - -export interface BasicFilterSortProps { +interface BasicFilterSortProps { displaySort: boolean; - color: string; + color: string | null; } -const BasicFilterSort = ({ displaySort, color }: BasicFilterSortProps) => { +const BasicFilterSort: FC = ({ displaySort, color }) => { return (
void; +} + +interface DebouncedSearchBoxState { + value: string; +} + // inspired by // https://medium.com/@justintulk/debouncing-reacts-controlled-textareas-w-redux-lodash-4383084ca090 -class DebouncedSearchBox extends React.Component { - constructor(props) { +class DebouncedSearchBox extends React.Component< + DebouncedSearchBoxProps, + DebouncedSearchBoxState +> { + private onChange: (value: string) => void; + private onChangeDebounced: (value: string) => void; + + constructor(props: DebouncedSearchBoxProps) { super(props); this.state = { value: props.value, @@ -19,13 +33,13 @@ class DebouncedSearchBox extends React.Component { this.handleChange = this.handleChange.bind(this); } - handleChange(newValue) { + handleChange(newValue: string) { this.setState({ value: newValue }, () => { this.onChangeDebounced(newValue); }); } - handleChangeImmediately(newValue) { + handleChangeImmediately(newValue: string) { this.setState({ value: newValue }, () => { this.onChange(newValue); }); @@ -40,7 +54,6 @@ class DebouncedSearchBox extends React.Component { }; return ( - // html template starts here
@@ -61,7 +74,6 @@ class DebouncedSearchBox extends React.Component { )}
- // html template ends here ); } } diff --git a/vis/js/templates/filtersort/SortDropdown.tsx b/vis/js/templates/filtersort/SortDropdown.tsx index f28b8478b..7ae592e10 100644 --- a/vis/js/templates/filtersort/SortDropdown.tsx +++ b/vis/js/templates/filtersort/SortDropdown.tsx @@ -1,10 +1,5 @@ -import React from "react"; -import { - DropdownButton, - MenuItem, - OverlayTrigger, - Tooltip, -} from "react-bootstrap"; +import React, { FC } from "react"; +import { DropdownButton, MenuItem } from "react-bootstrap"; import useMatomo from "../../utils/useMatomo"; import { useLocalizationContext } from "../../components/LocalizationProvider"; @@ -16,7 +11,13 @@ export interface SortDropdownProps { handleChange: (id: string) => void; } -const SortDropdown = ({ label, value, valueLabel, options, handleChange }: SortDropdownProps) => { +const SortDropdown: FC = ({ + label, + value, + valueLabel, + options, + handleChange, +}) => { const { trackEvent } = useMatomo(); const localization = useLocalizationContext(); @@ -26,7 +27,7 @@ const SortDropdown = ({ label, value, valueLabel, options, handleChange }: SortD trackEvent( "List controls", "Sort list", - selectedOption ? selectedOption.label : undefined + selectedOption ? selectedOption.label : undefined, ); }; @@ -42,20 +43,31 @@ const SortDropdown = ({ label, value, valueLabel, options, handleChange }: SortD className="truncate-text" title={ <> - + {label} - {valueLabel} - + + {valueLabel} + + } diff --git a/vis/js/templates/filtersort/StandardFilterSort.tsx b/vis/js/templates/filtersort/StandardFilterSort.tsx index e5c9f8e81..f01b19275 100644 --- a/vis/js/templates/filtersort/StandardFilterSort.tsx +++ b/vis/js/templates/filtersort/StandardFilterSort.tsx @@ -1,16 +1,18 @@ -import React from "react"; +import React, { FC } from "react"; import FilterDropdown from "../../components/filtersort/FilterDropdown"; import SearchBox from "../../components/filtersort/SearchBox"; import SortDropdown from "../../components/filtersort/SortDropdown"; -export interface StandardFilterSortProps { +interface StandardFilterSortProps { displaySort: boolean; - color: string; + color: string | null; } -const StandardFilterSort = ({ displaySort, color }: StandardFilterSortProps) => { +const StandardFilterSort: FC = ({ + displaySort, + color, +}) => { return ( - // html template starts here
{!!displaySort && }
- // html template ends here ); }; diff --git a/vis/js/templates/listentry/Abstract.tsx b/vis/js/templates/listentry/Abstract.tsx index 1e43dd106..6ffcc8540 100644 --- a/vis/js/templates/listentry/Abstract.tsx +++ b/vis/js/templates/listentry/Abstract.tsx @@ -1,29 +1,25 @@ -// @ts-nocheck - -import React from "react"; +import React, { FC } from "react"; import { connect } from "react-redux"; - import { useLocalizationContext } from "../../components/LocalizationProvider"; import Highlight from "../../components/Highlight"; +import { SelectedPaper, State } from "../../types"; interface AbstractProps { text: string; - isSelected: boolean; + isSelected: SelectedPaper; } -const Abstract = ({ text, isSelected }: AbstractProps) => { +const Abstract: FC = ({ text, isSelected }) => { const loc = useLocalizationContext(); return ( - // html template starts here

{text ? text : loc.default_abstract}

- // html template ends here ); }; -const mapStateToProps = (state) => ({ +const mapStateToProps = (state: State) => ({ isSelected: state.selectedPaper, }); diff --git a/vis/js/templates/listentry/AccessIcons.tsx b/vis/js/templates/listentry/AccessIcons.tsx index cf29db291..713554fcf 100644 --- a/vis/js/templates/listentry/AccessIcons.tsx +++ b/vis/js/templates/listentry/AccessIcons.tsx @@ -1,14 +1,17 @@ -// @ts-nocheck - -import React from "react"; - +import React, { FC } from "react"; import Highlight from "../../components/Highlight"; import Tags from "./Tags"; +import { AllPossiblePapersType } from "../../types"; + +const datasetPredicate = (e: string) => e.toLowerCase() === "dataset"; +const unknownPredicate = (e: string) => e.toLowerCase().includes("unknown"); -const datasetPredicate = (e) => e.toLowerCase() === "dataset"; -const unknownPredicate = (e) => e.toLowerCase().includes("unknown"); +interface AccessIconsProps { + paper: AllPossiblePapersType; + showDocTypes: boolean; +} -const AccessIcons = ({ paper, showDocTypes }) => { +const AccessIcons: FC = ({ paper, showDocTypes }) => { const isDataset = paper.resulttype.some(datasetPredicate); const tags = [...paper.tags]; @@ -17,12 +20,11 @@ const AccessIcons = ({ paper, showDocTypes }) => { ...paper.resulttype .filter((e) => !datasetPredicate(e)) .filter((e) => !unknownPredicate(e)) - .slice(0, isDataset ? 1 : 2) + .slice(0, isDataset ? 1 : 2), ); } return ( - // html template starts here
{!!paper.oa && ( @@ -48,7 +50,6 @@ const AccessIcons = ({ paper, showDocTypes }) => { )} {tags.length > 0 && }
- // html template ends here ); }; diff --git a/vis/js/templates/listentry/Area.tsx b/vis/js/templates/listentry/Area.tsx index dc87b0b0c..27c32ddb3 100644 --- a/vis/js/templates/listentry/Area.tsx +++ b/vis/js/templates/listentry/Area.tsx @@ -1,13 +1,21 @@ -// @ts-nocheck - -import React from "react"; +import React, { FC } from "react"; import { connect } from "react-redux"; - import { useLocalizationContext } from "../../components/LocalizationProvider"; import { mapDispatchToListEntriesProps } from "../../utils/eventhandlers"; import useMatomo from "../../utils/useMatomo"; +import { AllPossiblePapersType, State } from "../../types"; + +interface AreaProps { + disableClicks: boolean; + isShort: boolean; + paper: AllPossiblePapersType; + trackMouseOver: boolean; + handleAreaMouseout: () => void; + handleAreaMouseover: (paper: AllPossiblePapersType) => void; + handleZoomIn: (paper: AllPossiblePapersType) => void; +} -const Area = ({ +const Area: FC = ({ paper, isShort = false, trackMouseOver, @@ -35,7 +43,6 @@ const Area = ({ }; return ( - // html template starts here
- // html template ends here ); }; -const mapStateToProps = (state) => ({ +const mapStateToProps = (state: State) => ({ trackMouseOver: state.tracking.trackMouseOver, disableClicks: state.list.disableClicks, }); diff --git a/vis/js/templates/listentry/Citations.tsx b/vis/js/templates/listentry/Citations.tsx index 250c595bf..afc8623e8 100644 --- a/vis/js/templates/listentry/Citations.tsx +++ b/vis/js/templates/listentry/Citations.tsx @@ -1,18 +1,17 @@ -import React from "react"; +import React, { FC } from "react"; +import { NotAvailable } from "../../types"; interface CitationsProps { - number: number; + number: number | NotAvailable; label: string; } -const Citations = ({ number, label }: CitationsProps) => { +const Citations: FC = ({ number, label }) => { return ( - // html template starts here
{label}{" "} {number} 
- // html template ends here ); }; diff --git a/vis/js/templates/listentry/Details.tsx b/vis/js/templates/listentry/Details.tsx index 5900d9423..050912d49 100644 --- a/vis/js/templates/listentry/Details.tsx +++ b/vis/js/templates/listentry/Details.tsx @@ -1,56 +1,54 @@ -// @ts-nocheck - -import React from "react"; +import React, { FC } from "react"; import { connect } from "react-redux"; - import Highlight from "../../components/Highlight"; import { useLocalizationContext } from "../../components/LocalizationProvider"; +import { State } from "../../types"; const MAX_AUTHORS_LENGTH = 100; -const Details = ({authors, source, isSelected}) => { +interface DetailsProps { + authors: string[]; + source: string; + isSelected: boolean; +} + +const Details: FC = ({ authors, source, isSelected }) => { const loc = useLocalizationContext(); const authorsString = getAuthorsString( - authors, - isSelected ? Number.POSITIVE_INFINITY : MAX_AUTHORS_LENGTH + authors, + isSelected ? Number.POSITIVE_INFINITY : MAX_AUTHORS_LENGTH, ); - // console.log("Details.jsx: authorsString: ", authorsString); - // console.log("Details.jsx: loc.default_authors: ", loc.default_authors); - return ( - // html template starts here -
-
- - {authorsString ? authorsString : loc.default_authors} - -
- {!!source && ( -
+
+
+ + {authorsString ? authorsString : loc.default_authors} + +
+ {!!source && ( +
{source} -
- )} -
- // html template ends here +
+ )} +
); }; -const mapStateToProps = (state) => ({ +const mapStateToProps = (state: State) => ({ isSelected: !!state.selectedPaper, }); export default connect(mapStateToProps)(React.memo(Details)); -const getAuthorsString = (authorsList, maxLength) => { +const getAuthorsString = (authorsList: string[], maxLength: number) => { if (!authorsList || authorsList.length === 0) { return ""; } - const authorsListCopy = [...authorsList]; const ellipsis = "..."; @@ -66,7 +64,7 @@ const getAuthorsString = (authorsList, maxLength) => { while (authorsListCopy.length > 0) { const nextAuthor = authorsListCopy.shift(); let nextPossibleLength = - finalString.length + join.length + nextAuthor.length; + finalString!.length + join.length + nextAuthor!.length; if (authorsListCopy.length !== 0) { nextPossibleLength += ellipsis.length; diff --git a/vis/js/templates/listentry/DocTypesRow.tsx b/vis/js/templates/listentry/DocTypesRow.tsx index 5c0242947..8a0a310ca 100644 --- a/vis/js/templates/listentry/DocTypesRow.tsx +++ b/vis/js/templates/listentry/DocTypesRow.tsx @@ -1,11 +1,12 @@ -// @ts-nocheck - -import React from "react"; - +import React, { FC } from "react"; import { useLocalizationContext } from "../../components/LocalizationProvider"; import Highlight from "../../components/Highlight"; -const DocTypesRow = ({ types }) => { +interface DocTypesRowProps { + types: string[]; +} + +const DocTypesRow: FC = ({ types }) => { const loc = useLocalizationContext(); const typesString = types.length > 0 ? types.join(", ") : loc.unknown; diff --git a/vis/js/templates/listentry/DocumentType.tsx b/vis/js/templates/listentry/DocumentType.tsx index 0a0e18257..d5c477334 100644 --- a/vis/js/templates/listentry/DocumentType.tsx +++ b/vis/js/templates/listentry/DocumentType.tsx @@ -1,7 +1,4 @@ -// @ts-nocheck - -import React from "react"; - +import React, { FC } from "react"; import { useLocalizationContext } from "../../components/LocalizationProvider"; import Highlight from "../../components/Highlight"; @@ -9,7 +6,7 @@ interface DocumentTypeProps { type: string; } -const DocumentType = ({ type }: DocumentTypeProps) => { +const DocumentType: FC = ({ type }) => { const localization = useLocalizationContext(); return ( diff --git a/vis/js/templates/listentry/EntryBacklink.tsx b/vis/js/templates/listentry/EntryBacklink.tsx index b3a9d74fb..6bc46b924 100644 --- a/vis/js/templates/listentry/EntryBacklink.tsx +++ b/vis/js/templates/listentry/EntryBacklink.tsx @@ -1,7 +1,4 @@ -// @ts-nocheck - -import React from "react"; - +import React, { FC } from "react"; import { useLocalizationContext } from "../../components/LocalizationProvider"; interface EntryBacklinkProps { @@ -9,11 +6,10 @@ interface EntryBacklinkProps { onClick: () => void; } -const EntryBacklink = ({ isInStream, onClick }: EntryBacklinkProps) => { +const EntryBacklink: FC = ({ isInStream, onClick }) => { const localization = useLocalizationContext(); return ( - // html template starts here - // html template ends here ); }; diff --git a/vis/js/templates/listentry/Keywords.tsx b/vis/js/templates/listentry/Keywords.tsx index 5ca10617f..853558af8 100644 --- a/vis/js/templates/listentry/Keywords.tsx +++ b/vis/js/templates/listentry/Keywords.tsx @@ -1,18 +1,16 @@ -// @ts-nocheck - -import React from "react"; - +import React, { FC } from "react"; import { useLocalizationContext } from "../../components/LocalizationProvider"; import Highlight from "../../components/Highlight"; +import { PropsWithChildren } from "../../types"; -const Keywords = ({ children: text }) => { +const Keywords: FC = ({ children }) => { const localization = useLocalizationContext(); return (
{localization.keywords}: - {text} + {children}
); diff --git a/vis/js/templates/listentry/Link.tsx b/vis/js/templates/listentry/Link.tsx index bf57af73e..2e146f43c 100644 --- a/vis/js/templates/listentry/Link.tsx +++ b/vis/js/templates/listentry/Link.tsx @@ -1,8 +1,4 @@ - -// @ts-nocheck - -import React from "react"; - +import React, { FC } from "react"; import { useLocalizationContext } from "../../components/LocalizationProvider"; import useMatomo from "../../utils/useMatomo"; @@ -11,7 +7,7 @@ interface LinkProps { isDoi: boolean; } -const Link = ({ address, isDoi }: LinkProps) => { +const Link: FC = ({ address, isDoi }) => { const localization = useLocalizationContext(); const { trackEvent } = useMatomo(); @@ -19,7 +15,6 @@ const Link = ({ address, isDoi }: LinkProps) => { trackEvent("List document", "Open paper link", "Text link"); return ( - // html template starts here
[{isDoi ? "doi" : localization.link}]:{" "} @@ -39,7 +34,6 @@ const Link = ({ address, isDoi }: LinkProps) => { )}
- // html template ends here ); }; diff --git a/vis/js/templates/listentry/OrcidMetrics.tsx b/vis/js/templates/listentry/OrcidMetrics.tsx index 614d156bb..602e0144c 100644 --- a/vis/js/templates/listentry/OrcidMetrics.tsx +++ b/vis/js/templates/listentry/OrcidMetrics.tsx @@ -1,13 +1,25 @@ -// @ts-nocheck - -import React from "react"; - +import React, { FC } from "react"; import { useLocalizationContext } from "../../components/LocalizationProvider"; +import { NotAvailable } from "../../types"; +// TODO: This function looks strange after adding types. It must be refactored. // it is either some value or zero -const isDefined = (param) => !!param || parseInt(param) === 0; +const isDefined = (param: number | string | null) => { + if (!param) { + return false; + } + + return !!param || parseInt(param as string) === 0; +}; + +interface OrcidMetricsProps { + citations: number | string; + social_media: number | NotAvailable; + references_outside_academia: null | number; + baseUnit: null | string; +} -const OrcidMetrics = ({ +const OrcidMetrics: FC = ({ citations, social_media, references_outside_academia, @@ -16,7 +28,6 @@ const OrcidMetrics = ({ const localization = useLocalizationContext(); return ( - // html template starts here
- // html template ends here ); }; diff --git a/vis/js/templates/listentry/PaperButtons.tsx b/vis/js/templates/listentry/PaperButtons.tsx index 8245863d7..a3831987c 100644 --- a/vis/js/templates/listentry/PaperButtons.tsx +++ b/vis/js/templates/listentry/PaperButtons.tsx @@ -1,22 +1,20 @@ import React, { FC } from "react"; import { connect } from "react-redux"; - import useMatomo from "../../utils/useMatomo"; import { getPaperPDFClickHandler } from "../../utils/data"; import { mapDispatchToListEntriesProps } from "../../utils/eventhandlers"; import Highlight from "../../components/Highlight"; import { isNonTextDocument } from "../Paper"; -import { Paper } from "../../types"; +import { AllPossiblePapersType, State } from "../../types"; -// TODO: Update type for paper with new ones after merge (using union type) interface PaperButtonsProps { - paper: Paper; + paper: AllPossiblePapersType; showCiteButton: boolean; showExportButton: boolean; noCitationDoctypes: string[]; - handlePDFClick: (paper: Paper) => void; - handleCiteClick: (paper: Paper) => void; - handleExportClick: (paper: Paper) => void; + handlePDFClick: (paper: AllPossiblePapersType) => void; + handleCiteClick: (paper: AllPossiblePapersType) => void; + handleExportClick: (paper: AllPossiblePapersType) => void; } const PaperButtons: FC = ({ @@ -56,7 +54,7 @@ const PaperButtons: FC = ({ const hasCiteButton = showCiteButton && !paper.resulttype.some((t: string) => - noCitationDoctypes.includes(t.toLowerCase()) + noCitationDoctypes.includes(t.toLowerCase()), ); return ( @@ -111,7 +109,7 @@ const PaperButtons: FC = ({ ); }; -const mapStateToProps = (state: any) => ({ +const mapStateToProps = (state: State) => ({ showCiteButton: state.list.citePapers, noCitationDoctypes: state.list.noCitationDoctypes, showExportButton: state.list.exportPapers, @@ -119,5 +117,5 @@ const mapStateToProps = (state: any) => ({ export default connect( mapStateToProps, - mapDispatchToListEntriesProps + mapDispatchToListEntriesProps, )(PaperButtons); diff --git a/vis/js/templates/listentry/StandardListEntry.tsx b/vis/js/templates/listentry/StandardListEntry.tsx index 7ec4f7ca5..84f45071e 100644 --- a/vis/js/templates/listentry/StandardListEntry.tsx +++ b/vis/js/templates/listentry/StandardListEntry.tsx @@ -1,12 +1,8 @@ -// @ts-nocheck - -import React from "react"; +import React, { FC } from "react"; import { connect } from "react-redux"; - import { STREAMGRAPH_MODE } from "../../reducers/chartType"; import { mapDispatchToListEntriesProps } from "../../utils/eventhandlers"; import PaperButtons from "./PaperButtons"; - import Abstract from "./Abstract"; import AccessIcons from "./AccessIcons"; import Area from "./Area"; @@ -21,13 +17,30 @@ import Link from "./Link"; import Metrics from "./Metrics"; import OrcidMetrics from "./OrcidMetrics"; import Title from "./Title"; +import { + AllPossiblePapersType, + ServiceType, + SortValuesType, + State, +} from "../../types"; -/** - * Standard list entry template used in project website, CoVis and Viper. - * @param {Object} props - */ -const StandardListEntry = ({ - // data +interface StandardListEntryProps { + showDocumentType: boolean; + showMetrics?: unknown; + showAllDocTypes: boolean; + showBacklink: boolean; + showDocTags: boolean; + showKeywords: boolean; + service: ServiceType; + paper: AllPossiblePapersType; + isContentBased: boolean; + isInStreamBacklink: boolean; + isStreamgraph: boolean; + baseUnit: SortValuesType; + handleBacklinkClick: () => void; +} + +const StandardListEntry: FC = ({ paper, showDocumentType, showKeywords, @@ -40,7 +53,6 @@ const StandardListEntry = ({ showDocTags, showAllDocTypes, service, - // event handlers handleBacklinkClick, }) => { const backlink = { @@ -54,10 +66,9 @@ const StandardListEntry = ({ !isContentBased && !!baseUnit && !showMetrics && - (!!citations || parseInt(citations) === 0); + (!!citations || parseInt(citations as unknown as string) === 0); return ( - // html template starts here
@@ -70,33 +81,36 @@ const StandardListEntry = ({ isDoi={paper.list_link.isDoi} />
- {/* // ! TODO */} + {showDocumentType && paper.resulttype.length > 0 && ( )} {paper.comments.length > 0 && } {showKeywords && {paper.keywords}} - {/* // ! TODO */} + {showAllDocTypes && } - {service !== "orcid" && showMetrics && ( + {service !== "orcid" && showMetrics ? ( - )} + ) : null} - {service === "orcid" && showMetrics && ( + {service === "orcid" && showMetrics ? ( - )} + ) : null} + {!isStreamgraph && } {showCitations && } @@ -108,11 +122,10 @@ const StandardListEntry = ({ )}
- // html template ends here ); }; -const mapStateToProps = (state) => ({ +const mapStateToProps = (state: State) => ({ showDocumentType: state.list.showDocumentType, showMetrics: state.list.showMetrics, isContentBased: state.list.isContentBased, @@ -132,5 +145,5 @@ const mapStateToProps = (state) => ({ export default connect( mapStateToProps, - mapDispatchToListEntriesProps + mapDispatchToListEntriesProps, )(StandardListEntry); diff --git a/vis/js/templates/listentry/Title.tsx b/vis/js/templates/listentry/Title.tsx index 08406d904..5bb54c933 100644 --- a/vis/js/templates/listentry/Title.tsx +++ b/vis/js/templates/listentry/Title.tsx @@ -1,18 +1,25 @@ -// @ts-nocheck - -import React from "react"; +import React, { FC } from "react"; import { connect } from "react-redux"; - import Highlight from "../../components/Highlight"; import { useLocalizationContext } from "../../components/LocalizationProvider"; import { STREAMGRAPH_MODE } from "../../reducers/chartType"; import { getDateFromTimestamp } from "../../utils/dates"; import { mapDispatchToListEntriesProps } from "../../utils/eventhandlers"; import useMatomo from "../../utils/useMatomo"; +import { AllPossiblePapersType, State } from "../../types"; const MAX_TITLE_LENGTH = 164; -const Title = ({ +interface TitleProps { + disableClicks: boolean; + isSelected: boolean; + isStreamgraph: boolean; + paper: AllPossiblePapersType; + handleSelectPaper: (paper: AllPossiblePapersType) => void; + handleSelectPaperWithZoom: (paper: AllPossiblePapersType) => void; +} + +const Title: FC = ({ paper, isStreamgraph, disableClicks, @@ -45,7 +52,6 @@ const Title = ({ : formatTitle(rawTitle, MAX_TITLE_LENGTH - formattedDate.length); return ( - // html template starts here - // html template ends here ); }; -const mapStateToProps = (state) => ({ +const mapStateToProps = (state: State) => ({ isStreamgraph: state.chartType === STREAMGRAPH_MODE, disableClicks: state.list.disableClicks, isSelected: !!state.selectedPaper, @@ -67,7 +72,7 @@ const mapStateToProps = (state) => ({ export default connect(mapStateToProps, mapDispatchToListEntriesProps)(Title); -export const formatPaperDate = (date) => { +export const formatPaperDate = (date?: string) => { if (!date) { return ""; } @@ -85,7 +90,7 @@ export const formatPaperDate = (date) => { return formatted; }; -const formatTitle = (title, maxLength) => { +const formatTitle = (title: string, maxLength: number) => { const ellipsis = "..."; if (title.length > maxLength) { return title.substr(0, maxLength - ellipsis.length).trim() + ellipsis; diff --git a/vis/js/types/index.ts b/vis/js/types/index.ts index 0352b3d77..f94eb8d62 100644 --- a/vis/js/types/index.ts +++ b/vis/js/types/index.ts @@ -10,6 +10,8 @@ export { BasePaper, PubmedPaper, CommonPaperDataForAllIntegrations, + NotAvailable, + AllPossiblePapersType, } from "./models/paper"; export { Context } from "./visualization/context"; @@ -20,6 +22,11 @@ export { ScaleOptions } from "./visualization/scale-options"; export { ContextLine } from "./state/slices/context-line"; export { State } from "./state"; +export { + SelectedPaper, + FilterValuesType, + SortValuesType, +} from "./state/slices"; export { Toolbar, ScaleExplanations, diff --git a/vis/js/types/models/area.ts b/vis/js/types/models/area.ts index 164e9dbb8..245b49bc1 100644 --- a/vis/js/types/models/area.ts +++ b/vis/js/types/models/area.ts @@ -1,4 +1,4 @@ -import { PubmedPaper, BasePaper, OrcidPaper } from "../models/paper"; +import { AllPossiblePapersType } from "../models/paper"; export interface Area { area_uri: number; @@ -6,7 +6,7 @@ export interface Area { origR: number; origX: number; origY: number; - papers: PubmedPaper[] | BasePaper[] | OrcidPaper[]; + papers: AllPossiblePapersType[]; r: number; title: string; x: number; diff --git a/vis/js/types/models/paper.ts b/vis/js/types/models/paper.ts index b58e09bc4..ec9f1beb5 100644 --- a/vis/js/types/models/paper.ts +++ b/vis/js/types/models/paper.ts @@ -1,4 +1,4 @@ -type NotAvailable = "n/a"; +export type NotAvailable = "n/a"; export interface CommonPaperDataForAllIntegrations { id: string; @@ -19,7 +19,7 @@ export interface CommonPaperDataForAllIntegrations { citation_count: string | number; tags: string[]; - social: string | null; + social: number | NotAvailable; references: null; citations: number | null; readers: number | NotAvailable; @@ -116,6 +116,8 @@ export interface OrcidPaper extends CommonPaperDataForAllIntegrations { cited_by_qna_count: number | string | null; } +export type AllPossiblePapersType = BasePaper | PubmedPaper | OrcidPaper; + export interface Paper { id: string; safe_id: string; diff --git a/vis/js/types/state/index.ts b/vis/js/types/state/index.ts index c37e9555e..d81781412 100644 --- a/vis/js/types/state/index.ts +++ b/vis/js/types/state/index.ts @@ -26,11 +26,11 @@ export interface State { q_advanced: slices.QueryAdvanced; query: slices.Query; selectedBubble: slices.SelectedBubble; - selectedPaper: null; + selectedPaper: slices.SelectedPaper; service: ServiceType; streamgraph: slices.Streamgraph; timespan: string; toolbar: slices.Toolbar; tracking: slices.Tracking; - zoom: true; + zoom: boolean; } diff --git a/vis/js/types/state/slices/data.ts b/vis/js/types/state/slices/data.ts index 26bd1c840..689718f6b 100644 --- a/vis/js/types/state/slices/data.ts +++ b/vis/js/types/state/slices/data.ts @@ -1,6 +1,8 @@ +import { AllPossiblePapersType } from "../../index"; + export interface Data { size: number; - list: unknown[]; + list: AllPossiblePapersType[]; options: Options; } diff --git a/vis/js/types/state/slices/index.ts b/vis/js/types/state/slices/index.ts index 6692c9b82..55317615c 100644 --- a/vis/js/types/state/slices/index.ts +++ b/vis/js/types/state/slices/index.ts @@ -4,7 +4,7 @@ export { Chart } from "./chart"; export { ContextLine } from "./context-line"; export { Data } from "./data"; export { Heading } from "./heading"; -export { List } from "./list"; +export { List, FilterValuesType, SortValuesType } from "./list"; export { Misc } from "./misc"; export { ModalInfoType } from "./modal-info-type"; export { Modals } from "./modals"; @@ -17,3 +17,4 @@ export { Streamgraph } from "./streamgraph"; export { Toolbar } from "./toolbar"; export { Tracking } from "./tracking"; export { ChartTypes } from "./chartType"; +export { SelectedPaper } from "./selected-paper"; diff --git a/vis/js/types/state/slices/list.ts b/vis/js/types/state/slices/list.ts index 051bef4b9..5a6353268 100644 --- a/vis/js/types/state/slices/list.ts +++ b/vis/js/types/state/slices/list.ts @@ -1,12 +1,12 @@ export interface List { - baseUnit: string; + baseUnit: SortValuesType; citePapers: boolean; defaultSort: string; disableClicks: boolean; exportPapers: boolean; filterField: null; - filterOptions: string[]; - filterValue: string; + filterOptions: FilterValuesType[]; + filterValue: FilterValuesType; height: number; hideUnselectedKeywords: boolean; isContentBased: boolean; @@ -17,6 +17,9 @@ export interface List { showFilter: boolean; showKeywords: boolean; showMetrics: unknown; - sortOptions: string[]; - sortValue: string; + sortOptions: SortValuesType[]; + sortValue: SortValuesType; } + +export type FilterValuesType = "all" | "open_access" | "dataset"; +export type SortValuesType = "relevance" | "title" | "authors" | "year"; diff --git a/vis/js/types/state/slices/selected-bubble.ts b/vis/js/types/state/slices/selected-bubble.ts index ad1540435..86798525e 100644 --- a/vis/js/types/state/slices/selected-bubble.ts +++ b/vis/js/types/state/slices/selected-bubble.ts @@ -1,6 +1,6 @@ export interface SelectedBubble { title: string; uri: number; - color: unknown; + color: string; docIds: unknown; } diff --git a/vis/js/types/state/slices/selected-paper.ts b/vis/js/types/state/slices/selected-paper.ts new file mode 100644 index 000000000..03a9aa63b --- /dev/null +++ b/vis/js/types/state/slices/selected-paper.ts @@ -0,0 +1,3 @@ +export interface SelectedPaper { + safeId: string; +} diff --git a/vis/js/types/state/slices/tracking.ts b/vis/js/types/state/slices/tracking.ts index 7f900a433..76b97cc2e 100644 --- a/vis/js/types/state/slices/tracking.ts +++ b/vis/js/types/state/slices/tracking.ts @@ -1,3 +1,3 @@ export interface Tracking { - trackMouseOver: false; + trackMouseOver: boolean; } diff --git a/vis/js/utils/debounce.ts b/vis/js/utils/debounce.ts index 51ffbb3d5..9fe47dd12 100644 --- a/vis/js/utils/debounce.ts +++ b/vis/js/utils/debounce.ts @@ -1,11 +1,10 @@ // @ts-nocheck - /** * Debounce any function - * + * * Copied from helpers.js */ -export default function debounce(func, wait, immediate) { +export default function debounce(func, wait, immediate?) { var timeout; return function () { let context = this, diff --git a/vis/js/utils/eventhandlers.ts b/vis/js/utils/eventhandlers.ts index 36c8ade4d..01fa04367 100644 --- a/vis/js/utils/eventhandlers.ts +++ b/vis/js/utils/eventhandlers.ts @@ -1,4 +1,4 @@ -import { Paper } from "../types"; +import { AllPossiblePapersType, Paper } from "../types"; import { zoomIn, zoomOut, @@ -18,31 +18,36 @@ import { * @param {Function} dispatch */ export const mapDispatchToListEntriesProps = (dispatch: any) => ({ - handleZoomIn: (paper: Record) => + handleZoomIn: (paper: AllPossiblePapersType) => dispatch( zoomIn( { title: paper.area, uri: paper.area_uri }, - createAnimationCallback(dispatch) - ) + createAnimationCallback(dispatch), + ), ), - handlePDFClick: (paper: Paper) => dispatch(showPreview(paper)), - handleAreaMouseover: (paper: Paper) => dispatch(highlightArea(paper)), + handlePDFClick: (paper: AllPossiblePapersType) => + dispatch(showPreview(paper)), + handleAreaMouseover: (paper: AllPossiblePapersType) => + dispatch(highlightArea(paper)), handleAreaMouseout: () => dispatch(highlightArea(null)), - handleSelectPaper: (paper: Paper) => dispatch(selectPaper(paper)), - handleSelectPaperWithZoom: (paper: Paper) => + handleSelectPaper: (paper: AllPossiblePapersType) => + dispatch(selectPaper(paper)), + handleSelectPaperWithZoom: (paper: AllPossiblePapersType) => dispatch( zoomIn( { title: paper.area, uri: paper.area_uri }, createAnimationCallback(dispatch), false, false, - paper - ) + paper, + ), ), handleDeselectPaper: () => dispatch(deselectPaper()), handleBacklinkClick: () => dispatch(deselectPaper()), - handleCiteClick: (paper: Paper) => dispatch(showCitePaper(paper)), - handleExportClick: (paper: Paper) => dispatch(showExportPaper(paper)), + handleCiteClick: (paper: AllPossiblePapersType) => + dispatch(showCitePaper(paper)), + handleExportClick: (paper: AllPossiblePapersType) => + dispatch(showExportPaper(paper)), }); /** @@ -55,8 +60,8 @@ export const mapDispatchToMapEntriesProps = (dispatch: any) => ({ zoomIn( { title: area.title, uri: area.area_uri }, createAnimationCallback(dispatch), - alreadyZoomed - ) + alreadyZoomed, + ), ), handleZoomOut: () => dispatch(zoomOut(createAnimationCallback(dispatch))), handleDeselectPaper: () => dispatch(deselectPaper()), From 5b0610f44ebcbf150b500f289b9ac6b19c6b02d7 Mon Sep 17 00:00:00 2001 From: andrei Date: Fri, 19 Sep 2025 16:05:47 +0200 Subject: [PATCH 049/149] refactor: removed progress option for production builds --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a01e37817..8d535c1a1 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "scripts": { "test": "TZ='Europe/Vienna' vitest", "dev": "webpack --progress --watch --mode=development", - "prod": "webpack --progress", + "prod": "webpack", "start": "webpack serve --progress --mode=development --env example=base", "example:base": "npm start", "example:pubmed": "npm start -- --env example=pubmed", From efaa24dbc95f27fa0b482817cd65b2e035505374 Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 22 Sep 2025 10:14:28 +0200 Subject: [PATCH 050/149] refactor: the citation_count type after citations bugfix --- vis/js/types/models/paper.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vis/js/types/models/paper.ts b/vis/js/types/models/paper.ts index ec9f1beb5..8485b9ebf 100644 --- a/vis/js/types/models/paper.ts +++ b/vis/js/types/models/paper.ts @@ -17,7 +17,7 @@ export interface CommonPaperDataForAllIntegrations { comments: string[]; comments_for_filtering: string; - citation_count: string | number; + citation_count: NotAvailable | number; tags: string[]; social: number | NotAvailable; references: null; From f52f4820d8655439c7005695e37ce2b2056bbb3c Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 22 Sep 2025 10:21:21 +0200 Subject: [PATCH 051/149] bugfix: aliases configuration for tests --- vite.config.ts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/vite.config.ts b/vite.config.ts index 10af60b5a..9325d774c 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,21 +1,24 @@ import { defineConfig } from "vitest/config"; import react from "@vitejs/plugin-react"; -import inject from '@rollup/plugin-inject' +import inject from "@rollup/plugin-inject"; export default defineConfig({ plugins: [ react(), inject({ - $: [ 'jquery', '*' ], - jQuery: 'jquery', + $: ["jquery", "*"], + jQuery: "jquery", }), ], assetsInclude: ["**/*.csl"], resolve: { alias: { - lib: "/vis/lib", - markjs: "mark.js/dist/jquery.mark.js", + "@": "/vis/", + "@js": "/vis/js/", + + "lib": "/vis/lib", + "markjs": "mark.js/dist/jquery.mark.js", // hypher: "hypher/dist/jquery.hypher.js", }, }, From c935ab4bce82e1563a4b598f38196c79a044817e Mon Sep 17 00:00:00 2001 From: chreman Date: Wed, 1 Oct 2025 14:37:31 +0200 Subject: [PATCH 052/149] logging bugfix for docker --- local_dev/searchflow-container/Dockerfile | 6 +++--- server/workers/api/src/app.py | 6 +++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/local_dev/searchflow-container/Dockerfile b/local_dev/searchflow-container/Dockerfile index b5df97e18..0ac5beac7 100644 --- a/local_dev/searchflow-container/Dockerfile +++ b/local_dev/searchflow-container/Dockerfile @@ -6,12 +6,12 @@ RUN a2enmod rewrite RUN apt-get update && apt-get install -y \ curl libsqlite3-dev libonig-dev libxml2-dev \ - gconf-service libasound2 libatk1.0-0 libatk-bridge2.0-0 libc6 libcairo2 libcups2 \ - libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 \ + libasound2 libatk1.0-0 libatk-bridge2.0-0 libc6 libcairo2 libcups2 \ + libdbus-1-3 libexpat1 libfontconfig1 libgcc-s1 libgdk-pixbuf-2.0-0 \ libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 \ libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 \ libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates \ - fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget + fonts-liberation libappindicator3-1 libnss3 lsb-release xdg-utils wget RUN docker-php-ext-install pdo pdo_sqlite mbstring xml fileinfo diff --git a/server/workers/api/src/app.py b/server/workers/api/src/app.py index 546eacb2b..33f1f93f3 100644 --- a/server/workers/api/src/app.py +++ b/server/workers/api/src/app.py @@ -30,8 +30,12 @@ def api_patches(app): app = Flask('v1', instance_relative_config=True) +# Configure logging +app.logger.setLevel(os.getenv("LOGLEVEL") or logging.DEBUG) handler = logging.StreamHandler(sys.stdout) -handler.setLevel(app.logger.level) +handler.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')) +app.logger.addHandler(handler) + app.wsgi_app = ProxyFix(app.wsgi_app, x_proto=1, x_port=1, x_for=1, x_host=1, x_prefix=1) app.wsgi_app = ReverseProxied(app.wsgi_app) CORS(app, expose_headers=["Content-Disposition", "Access-Control-Allow-Origin"]) From 86549817fc31c4ca50f9547c6ed328ea2996c69e Mon Sep 17 00:00:00 2001 From: andrei Date: Tue, 7 Oct 2025 17:54:32 +0200 Subject: [PATCH 053/149] feat: implementation of the sample data pipeline and frontend connection --- local_dev/searchflow-container/Dockerfile | 2 +- server/services/search.php | 1 + server/services/searchAQUANAVI.php | 29 + server/workers/api/src/apis/aquanavi.py | 51 + server/workers/api/src/app.py | 2 + .../workers/common/common/aquanavi/mapping.py | 145 + .../common/aquanavi/mesocosm_data_cleaned.csv | 5262 +++++++++++++++++ vis/js/components/ContextLine.tsx | 183 +- vis/js/dataprocessing/managers/DataManager.ts | 3 + vis/js/default-config.ts | 1 + 10 files changed, 5586 insertions(+), 93 deletions(-) create mode 100644 server/services/searchAQUANAVI.php create mode 100644 server/workers/api/src/apis/aquanavi.py create mode 100644 server/workers/common/common/aquanavi/mapping.py create mode 100644 server/workers/common/common/aquanavi/mesocosm_data_cleaned.csv diff --git a/local_dev/searchflow-container/Dockerfile b/local_dev/searchflow-container/Dockerfile index 0ac5beac7..73cc72686 100644 --- a/local_dev/searchflow-container/Dockerfile +++ b/local_dev/searchflow-container/Dockerfile @@ -1,4 +1,4 @@ -FROM php:8.2-apache +FROM php:8.2-apache-bookworm LABEL maintainer="Chris Kittel " diff --git a/server/services/search.php b/server/services/search.php index 830b89af4..957952ccb 100644 --- a/server/services/search.php +++ b/server/services/search.php @@ -101,6 +101,7 @@ function search( "base" => "BASE", "openaire" => "OpenAire", "orcid" => "ORCID", + "aquanavi" => "AQUANAVI", ); $query = ($do_clean_query === true) diff --git a/server/services/searchAQUANAVI.php b/server/services/searchAQUANAVI.php new file mode 100644 index 000000000..4ff05e805 --- /dev/null +++ b/server/services/searchAQUANAVI.php @@ -0,0 +1,29 @@ + \ No newline at end of file diff --git a/server/workers/api/src/apis/aquanavi.py b/server/workers/api/src/apis/aquanavi.py new file mode 100644 index 000000000..27448ef30 --- /dev/null +++ b/server/workers/api/src/apis/aquanavi.py @@ -0,0 +1,51 @@ +import os + +from flask import request, make_response, abort +from flask_restx import Namespace, Resource, fields +from common.aquanavi.mapping import map_sample_data + +# Namespace setup +aquanavi_ns = Namespace("aquanavi", description="AQUANAVI API operations") + +# Model definition +aquanavi_querymodel = aquanavi_ns.model("SearchQuery", { + "q": fields.String( + example='aquatic mesocosm facilities', + description='query string', + required=True + ), + } +) + +@aquanavi_ns.route("/search") +class Search(Resource): + @aquanavi_ns.doc(responses={ 200: "OK", 400: "Invalid search parameters" }) + @aquanavi_ns.expect(aquanavi_querymodel) + @aquanavi_ns.produces(["application/json", "text/csv"]) + def post(self): + """ + Perform a search query using AQUANAVI API. + """ + try: + sample_data = map_sample_data() + headers = self.get_response_headers() + return make_response(sample_data, 200, headers) + except Exception as e: + aquanavi_ns.logger.error(e) + abort(500, "Problem encountered, check logs.") + + def get_response_headers(self): + headers = {} + if request.headers["Accept"] == "application/json": + headers["Content-Type"] = "application/json" + return headers + + +@aquanavi_ns.route("/service_version") +class ServiceVersion(Resource): + def get(self): + """ + Get the current service version. + """ + result = {"service_version": os.getenv("SERVICE_VERSION")} + return make_response(result, 200, { "Content-Type": "application/json" }) \ No newline at end of file diff --git a/server/workers/api/src/app.py b/server/workers/api/src/app.py index 33f1f93f3..5853b7b84 100644 --- a/server/workers/api/src/app.py +++ b/server/workers/api/src/app.py @@ -10,6 +10,7 @@ from apis.pubmed import pubmed_ns from apis.openaire import openaire_ns from apis.orcid import orcid_ns +from apis.aquanavi import aquanavi_ns from apis.create_vis import vis_ns from apis.export import export_ns @@ -47,6 +48,7 @@ def api_patches(app): api.add_namespace(vis_ns, path='/vis') api.add_namespace(export_ns, path='/export') api.add_namespace(orcid_ns, path='/orcid') +api.add_namespace(aquanavi_ns, path='/aquanavi') app.logger.debug(app.config) app.logger.debug(app.url_map) diff --git a/server/workers/common/common/aquanavi/mapping.py b/server/workers/common/common/aquanavi/mapping.py new file mode 100644 index 000000000..df71b91b9 --- /dev/null +++ b/server/workers/common/common/aquanavi/mapping.py @@ -0,0 +1,145 @@ +import re +import sys +import pandas as pd + +from pathlib import Path + +CSV_PATH = "common/common/aquanavi/mesocosm_data_cleaned.csv" +MESOCOSM_ORG_LANDING = 'https://mesocosm.org/' +DEFAULT_DOCUMENT_TYPE = "physical object" +DEFAULT_RESULT_TYPE = ['Other/Unknown material'] +REQUIRED_COLUMNS = [ + "Name", + "Country", + "Equipment", + "Specialist areas", + "Controlled Parameters", + "Description of Facility", + "Facility location(s) split", + "Years of Mesocosm Experiments", + "Photos of experiments/installations images", +] + +def get_latitude_longitude(row): + coordinates_string = str(row["Facility location(s) split"]).strip() + + latitude, longitude = None, None + + if "," in coordinates_string: + try: + latitude, longitude = [x.strip() for x in coordinates_string.split(",", 1)] + longitude = str(longitude).strip("[]'\" ") + latitude = str(latitude).strip("[]'\" ") + except Exception: + latitude, longitude = None, None + + return [latitude, longitude] + +def get_years_of_experiments(row): + # Supported formats: yyyy - present; yyyy - yyyy; yyyy to present; since yyyy; + # started yyyy / starting yyyy / operational since yyyy; yyyy-present; + text = str(row["Years of Mesocosm Experiments"]).strip() + if not text: + return None, None + + text = text.lower().replace("-", "-").replace("—", "-").replace("-", "-") + + # yyyy - present + match = re.search(r"(\d{4})\s*-\s*present", text) + if match: + return match.group(1), "present" + + # yyyy - yyyy + match = re.search(r"(\d{4})\s*-\s*(\d{4})", text) + if match: + return match.group(1), match.group(2) + + # yyyy to present + match = re.search(r"(\d{4})\s*to\s*present", text) + if match: + return match.group(1), "present" + + # since yyyy + match = re.search(r"since\s*(\d{4})", text) + if match: + return match.group(1), "present" + + # started yyyy / starting yyyy / operational since yyyy + match = re.search(r"(?:started|starting|operational since)\s*(\d{4})", text) + if match: + return match.group(1), "present" + + # yyyy-present + match = re.search(r"(\d{4})-present", text) + if match: + return match.group(1), "present" + + return None, None + +def get_coverage(row): + latitude, longitude = get_latitude_longitude(row) + start, end = get_years_of_experiments(row) + + coverage_parts = [] + coverage_parts.append(f"country={str(row['Country']).strip()}" if row["Country"] else "country= ") + coverage_parts.append(f"east='{longitude}'" if longitude else "east=") + coverage_parts.append(f"north='{latitude}'" if latitude else "north=") + coverage_parts.append(f"start='{start}'" if start else "start=") + coverage_parts.append(f"end='{end}'" if end else "end=") + + result = "; ".join(coverage_parts) + return result + +def get_abstract(row): + equipment = str(row["Equipment"]).strip() + description = str(row["Description of Facility"]).strip() + parameters = str(row["Controlled Parameters"]).strip() + + abstract_parts = [part for part in [description, equipment, parameters] if part and part.lower() != "nan"] + result = ". ".join(abstract_parts) + + return result + +def check_that_csv_file_exists(csv_path): + if not csv_path.exists(): + sys.exit(f"CSV does not exists: {csv_path}.") + +def check_that_required_rows_exists(df, csv_path): + for col in REQUIRED_COLUMNS: + if col not in df.columns: + sys.exit(f"The '{col}' is missing in the {csv_path} file") + +def map_sample_data(): + csv_path = Path(CSV_PATH) + + check_that_csv_file_exists(csv_path) + + df = pd.read_csv(csv_path).fillna("") + + check_that_required_rows_exists(df, CSV_PATH) + + result = [] + for _, row in df.iterrows(): + title = str(row["Name"]).strip() if row["Name"] else "" + image = row["Photos of experiments/installations images"] if row["Photos of experiments/installations images"] else "" + subject = str(row["Specialist areas"]).strip() if row["Specialist areas"] else "" + abstract = get_abstract(row) + coverage = get_coverage(row) + + result.append({ + "title": title, + "identifier": MESOCOSM_ORG_LANDING, + "type": DEFAULT_DOCUMENT_TYPE, + "resulttype": DEFAULT_RESULT_TYPE, + "authors": "", + "year": "", + "language": "", + "oa_state": "", + "published_in": "", + "relation": image, + "paper_abstract": abstract, + "subject_orig": subject, + "coverage": coverage + }) + + return { "documents": result } \ No newline at end of file diff --git a/server/workers/common/common/aquanavi/mesocosm_data_cleaned.csv b/server/workers/common/common/aquanavi/mesocosm_data_cleaned.csv new file mode 100644 index 000000000..3976bbc56 --- /dev/null +++ b/server/workers/common/common/aquanavi/mesocosm_data_cleaned.csv @@ -0,0 +1,5262 @@ +url,Name,Legal name of organisation,Country,Continent,Organisation address,Primary contact information (PI),Years of Mesocosm Experiments,Description of Facility,Controlled Parameters,Research Topics,Facility location(s),Primary interests,Specialist areas,Equipment,Lodging,Source of Information,Photos of experiments/installations,Photos of experiments/installations images,Equipment images,Lodging images,Manipulations,Facility location(s) split,location_facilities +https://mesocosm.org/mesocosm/sites-aquanet-skogaryd-research-station/,SITES AquaNet – Skogaryd Research Station,SITES and Göteborg University,Sweden,Europe,"Göteborg University +Inst. for Geosciences +Guldhedsgatan 5a +40530 Göteborg +Sweden +  +","Leif Klemedtsson +Please login or request access to view contact information. +",2017," +Open access to national and international researchers. +Outdoor, freshwater, deployed in an adaptable jetfloat, placed in the lake Erssjön within Skogaryd research Catchment. +PE-film enclosures or 20 hardshell PE enclosures (ø = 0.9 m, depth = 1.5 m, volume = 700 l) + +",,"Advanced general understanding in ecology by using modularized experiments across SITES-AquaNet stations (Sweden) or potential collaborators (Sweden, Europe and other continents). Topics: biodiversity-functioning-stability relationships, community ecology, ecological stoichiometry, food web interactions, benthic-pelagic dynamics, biochemistry (carbon cycling), cyanobacterial blooms and global change research. Possibility to combine mechanistic experiments with lake monitoring data from Lake Erssjön (e.g., phytoplankton, zooplankton, nutrients and on-site climate data, incl. temperature profile measurements). +"," + + + + + 58.3712, 12.1613 + +",,,"Apogee SQ-500 (PAR), CTG Trilux fluorometer (chlorophyll-a, phycocyanin and turbidity) and Aanderaa 4531 optode (O2 and temperature) sensors fulltime deployed in each enclosure, deployed with a Campbell CR1000 datalogger and an AM16/32B multiplexer (https://www.campbellsci.com). The sensor and logger are connected to Skogaryd fiber-optic network for maintenance and data retrieval. Surveillance camera mounted for remote monitoring of the site. +Hach with DO and pH, an AP-2000 AquaRead Multiprobe (http://www.aquaread.com/portofolio/ap-2000/) equipped with a chlorophyll a sensor, and an Apogee MQ-500 (PAR) sensor with handheld meters. +Laboratory container for filtering and extraction of samples, cold storage and freezers are available at the research station. Connection to laboratories for analysis at the Swedish University of Agricultural Sc.; the Geochemical laboratory (http://www.slu.se/en/departments/aquatic-sciences-assessment/laboratories/geochemical-laboratory/), and at the Uppsala University; the Erken Laboratory (http://www.ieg.uu.se/erken-laboratory). +","Lodging capability in two houses for 8 persons with a smaller conference room in the station area (see skogarydwebmap.gu.se). A conference hostel located nearby can take 25 persons +","SITES (AquaNet, Water and Spectral projects) (http://www.fieldsites.se) +"," + + + +Photo credit: Leif Klemedtsson + + + + +Photo credit: Leif Klemedtsson + + + + +  +","['http://mesocosm.org/wp-content/uploads/2018/05/Skogaryd_2-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Skogaryd_1-1024x683.jpg']",,,,"['58.3712', ' 12.1613']","{'coordinates': ['58.3712', '12.1613']}" +https://mesocosm.org/mesocosm/university-koblenz-landau/,Landau Stream Mesocosm Facility (LSMF),University Koblenz-Landau,Germany,Europe,"University Koblenz-Landau + Fortstraße 7 + 76829 Landau +","Ralf Schulz + Matthias Wieczorek +Please login or request access to view contact information. +",2008 - present,"The stream mesocosm facility at the Landau Campus (SW Germany) consists of 16 independent high-density concrete stream channels (each channel: 45 m length, 0.5 m depth; 0.4 m width). The channels can be run in a flow-through or recirculating mode with discharges up to about 3 L/s representing flow conditions and hydraulic residence times as typically represented by scenarios used e.g. for the regulatory assessment of chemicals in Europe. +","Discharge (L/s) +Flow (flow-through or/and recirculating) +Taxon and coverage of aquatic macrophytes +Sediment composition +Shading +Exposure scenario (peak-, hour- and day-scale) +","Environmental fate of pollutants (e.g. sorption transient storage and longitudinal dispersion) +Assessment of adverse effects of pollutants on macroinvertebrates following pulse exposures +Evaluation and establishment of aquatic-terrestrial model ecosystems to assess aquatic insect emergence-related pollutant transfer or effect translation from aquatic to adjacent terrestrial systems +"," + + + + + 49.20269,8.106179999999995 + +",,,"Sediment of various compositions +Aquatic macrophytes (e.g. Elodea nuttallii, E. canadensis, Myriophyllum spicatum) +","Possible upon negotiation +","References: + Elsaesser, D., Stang, C., Bakanov, N., Schulz, R., 2013. The Landau Stream Mesocosm Facility: pesticide mitigation in vegetated flow-through streams. Bull. Environ. Contam. Toxicol. 90, 640–5. doi:10.1007/s00128-013-0968-9 + Stang, C., Elsaesser, D., Bundschuh, M., Ternes, T. a., Schulz, R., 2013. Mitigation of Biocide and Fungicide Concentrations in Flow-Through Vegetated Stream Mesocosms. J. Environ. Qual. 42, 1889. doi:10.2134/jeq2013.05.0186 + Stang, C., Wieczorek, M.V., Noss, C., Lorke, A., Scherr, F., Goerlitz, G., Schulz, R., 2014. Role of submerged vegetation in the retention processes of three plant protection products in flow-through stream mesocosms. Chemosphere 107, 13–22. doi:10.1016/j.chemosphere.2014.02.055 + Wieczorek, M. V., Kötter, D., Gergs, R., Schulz, R., 2015. Using stable isotope analysis in stream mesocosms to study potential effects of environmental chemicals on aquatic-terrestrial subsidies. Environ. Sci. Pollut. Res. 22, 12892–12901. doi:10.1007/s11356-015-4071-0 + Wieczorek, M. V., Bakanov, N., Stang, C., Bilancia, D., Lagadic, L., Bruns, E., Schulz, R., 2016. Reference scenarios for exposure to plant protection products and invertebrate communities in stream mesocosms. Sci. Total Environ. 545-546, 308-319. doi: 10.1016/j.scitotenv.2015.12.048 +"," + + + + +Stream mesocosm facility at the Landau Campus + + + + + +Stream mesocosm facility at the Landau Campus + + + + +","['http://mesocosm.org/wp-content/uploads/2017/05/Stream-Mesocosms-Landau_400px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Fliessrinnenanlage_400.jpg']",,,,"['49.20269', '8.106179999999995']","{'coordinates': ['49.20269', '8.106179999999995']}" +https://mesocosm.org/mesocosm/sites-aquanet-erken-laboratory/,SITES AquaNet-Erken Laboratory,Uppsala University,Sweden,Europe,"Uppsala University: +P.O. Box 256 +SE-751 05 Uppsala +Sweden +  +Erken Laboratory: +Norra Malmavägen +761 73 Norrtälje +Sweden +","Silke Langenheder: +Please login or request access to view contact information. +",2017 - present," +Open access to national and international researchers. +Outdoor, freshwater, lake deployed in an adaptable jetfloat. +PE-film enclosures or 20 hard-shell PE enclosures (ø = 0.9m, depth = 1.5m, volume = 700L). +In addition, there is access to another set of 20 hard-shell PE enclosures (ø = 1m, depth = 2 m, volume = 1200L). + +",,"Advance general understanding in ecology by using modularized experiments across SITES-AquaNet stations (Sweden) or potential collaborators (Sweden, Europe and other continents). Topics: biodiversity-functioning-stability relationships, community ecology, ecological stoichiometry, food web interactions, benthic-pelagic dynamics, biochemistry (carbon cycling), cyanobacterial blooms and global change research. Possibility to combine mechanistic experiments with historical (decadal) lake monitoring data from Lake Erken (e.g., phytoplankton, zooplankton, fish, nutrients and high frequency temperature measurements). +"," + + + + + 59.8354205, 18.6327766 + +",,,"Apogee SQ-500 (PAR), CTG Trilux fluorometer (chlorophyll-a, phycocyanin and turbidity) and Aanderaa 4531 optode (O2 and temperature) sensors fulltime deployed in each enclosure. CR1000 dataloggers and AM16/32B multiplexers. Possibility to develop Internet interface for collected data. One EXO2 Multiprobe (https://www.ysi.com/EXO2) one AP-2000 AquaRead Multiprobe (http://www.aquaread.com/portofolio/ap-2000/) and one Apogee MQ-500 (PAR) with handheld meters. Laboratory analytical services available in site (http://www.ieg.uu.se/erken-laboratory/analytical-services/) or at Uppsala University (http://www.ieg.uu.se/limnology/) +","Capacity in site (Erken Laboratory) up to 60 people with fridges, freezers and cooking facilities (http://www.ieg.uu.se/erken-laboratory/.) +","SITES AquaNet, Water and Spectral: http://www.fieldsites.se +NETLAKE: www.netlake.org +GLEON: www.gleon.org +"," + + + +Photo credit: Sophie Wertek + + + + +Photo credit: Erik Sahlee + + + + +","['http://mesocosm.org/wp-content/uploads/2018/05/Erken_2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Erken_1-1024x705.jpg']",,,,"['59.8354205', ' 18.6327766']","{'coordinates': ['59.8354205', '18.6327766']}" +https://mesocosm.org/mesocosm/resources-garden-of-aquatic-plant/,Resources garden of aquatic plant,"Wuhan Botanical Garden, Chinese Academy of Sciences",China,Asia,"Lumo Road #1, Wuhan, China +","(+86)13297957139 +Please login or request access to view contact information. +",2019-2022,"Total area of 450 m2, and with the concrete pools of 1 * 1 m2 and 2 * 2 m2 at 1 m and 1.5 m depths.  Electricity is powered, and two types of water supply (from nearby Donghu Lake or tap water) +","Water depth at the gradient of 25 cm to 150 cm, and the temperature could be also controlled by the heat devices and control panel. +","functional trait; global warming +"," + + + + + 30.54694,114.41972 + +","1. the effects of warming or extreme water level changes on submerged macrophytes +2. the trade-offs between functional traits of submerged macrophytes +3. the interaction between submerged macrophytes and phytoplankton, zooplankton and fish +","Aquatic plant +","YSI multi-parameter probe, PAM monitor, Li-1400 +","Wuhan +","http://english.wbg.cas.cn/ +"," + + + +The green house and the heating control system + + + + +Outdoor tanks with different size and area + + + + +Tanks with different macrophytes and water depth + + + + +","['http://mesocosm.org/wp-content/uploads/2019/03/The-green-house-and-the-heating-control-system-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Outdoor-tanks-with-different-size-and-area-300x225.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Tanks-with-different-macrophytes-and-water-depth-300x225.jpeg']",,,,"['30.54694', '114.41972']","{'coordinates': ['30.54694', '114.41972']}" +https://mesocosm.org/mesocosm/large-experimental-array-of-ponds-leap/,Large Experimental Array of Ponds (LEAP),McGill University,Canada,North America,"McGill Department of Biology +Stewart Biology Bldg +1205 Dr Penfield Ave +Montreal, QC H3A 1B1 +Canada +","Professor Andrew Gonzalez +Please login or request access to view contact information. +",2016 - present,"LEAP is based at McGill University’s Gault Reserve It is a facility designed for well-replicated experiments addressing the evolution and ecology of aquatic ecosystems exposed to environmental stressors. It is an array of 96 mesocosm tanks, each containing ~1000 liters of water.  Water and organisms (excluding fish) are piped to LEAP directly from a Lake Hertel over a kilometer away. Lake Hertel is a protected lake not exposed to contaminants. The plumbing at LEAP allows for a semi-continuous flow of lake water and organisms into and out of the tanks throughout the season. These communities are natural analogues of the freshwater ponds and lakes so common in Canadian landscapes. The onsite lab allows us to rapidly process samples (see images below). An outflow reservoir can hold the outflow from all mesocosms so that decontamination can be done, if needed. +","Contaminants such as pH and herbicide concentrations. +"," +Freshwater ecology and evolution +Limnology +Ecosystem processes + +"," + + + + + 45.5368, -73.1578 + +","Experimental research addressing how complex aquatic communities respond to environmental stressors.  +"," +Experimental evolution +Ecology +Metagenomics  + +"," +Fluoroprobe +Microscopes +Drone + +","Available +https://gault.mcgill.ca/en/meeting-and-lodging/detail/lodging-at-the-reserve/ +","http://gonzalezlab.weebly.com/leap.html +"," + + + +Panoramic view of the LEAP facility embedded in forest of the Gault reserve, with the inflow and outflow reservoirs visible. +Photo credit: Andrew Gonzalez + + + + +Panoramic view of the LEAP-lab, in and outflow reservoir and mesocosm platform +Photo credit: Andrew Gonzalez + + + + +Depth and multiparameter probe (YSI) physico-chemical measurements.  Photo credit: Vincent Fugère +  + + + + +","['http://mesocosm.org/wp-content/uploads/2019/04/3-1024x769.png', 'http://mesocosm.org/wp-content/uploads/2019/04/2-1024x368.png', 'http://mesocosm.org/wp-content/uploads/2019/04/1.png']",,,,"['45.5368', ' -73.1578']","{'coordinates': ['45.5368', '-73.1578']}" +https://mesocosm.org/mesocosm/tva%cc%88rminne-mesocosm-facility-tmf/,Tvärminne Mesocosm Facility (TMF),University of Helsinki,Finland,Europe,"University of Helsinki + P.O. Box 3 + 00014 University of Helsinki + Finland +","Director: Marko Reinikainen + Research Coordinator: Joanna Norkko +Please login or request access to view contact information.,Please login or request access to view contact information. +",Established 1902; Large field mesocosms run periodically since 1988,"pelagic – marine – outdoor + A large nature reserve surrounding TZS is dedicated to research, providing access to a pristine environment for field mesocosms. Research vessels and technical services support sampling and maintenance; a hovercraft allows winter-studies. Aquarium facilities with natural or artificial light are available for flow-through experiments at up to 100 000 m3 daily water capacity. A marine laboratory provides analytical services. +","Temperature, light, pH, pCO2, nutrient levels, community composition, turbidity +","Biodiversity, stoichiometry, benthic ecology, plankton ecology, seagrass ecology, ice studies, reproductive evolution in fishes +"," + + + + + 59.8431619,23.2440297 + +",,,"Wet labs, outdoor aquarium facility, climatic chambers, bio-optical instrumentation (spectrophotometry, spectrofluorometry), masspectrometry, carbon analyzers, microscopes with digital imaging, isotope lab, chemistry lab, CTD, meters for light, turbidity and oxygen, field sampling equipment, research vessels, hovercraft +","Dormitories with ca 100 beds, full board, self-service kitchens, sea-side sauna +","http://www.finmari-infrastructure.fi/field-stations/tvarminne-uhel/ +"," + + + +Pristine nature reserve for experimental set-ups + + + + +SYKE-MRC field mesocosm work at Tvärminne + + + + +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}" +https://mesocosm.org/mesocosm/cretacosmos/,CRETACOSMOS,Hellenic Centre for Marine Research (HCMR),Greece,Europe,"Institute of Oceanography + Ex American Base Gournes + 71003 Heraklion, Crete + Greece +","Dr. Paraskevi Pitta +Please login or request access to view contact information. +",2009 to present,"outdoor – pelagic/benthic – marin + 12 polyethylene mesocosm-bags up to 5 m3 (1.32 m diameter) incubated in two large volume concrete tanks (one with volume 150 m³ and 3 m depth and a second one with volume 350 m³ and 5 m depth) + 9 benthocosms combining water column (1.5 m3, 4 m deep, 0.64 m diameter) and sediment (85 L) in the same polyethylene mesocosm-bag + The smaller (150 m³) tank is equipped by a sophisticated, fully-automated heating/cooling water system with electric valves, resistances and temperature sensors that allow water heating/cooling and temperature control at ±0.5 ºC of targeted temperature +","Temperature, light, nutrients +","Response of the ultra-oligotrophic food web of the Eastern Mediterranean to perturbations, climate change scenarios (simultaneous effect of warming & acidification), impact of aerosol input, effect of silver nanoparticles, benthic-pelagic coupling at benthocosms, hypoxia +"," + + + + + 35.3387352,25.14421260 + +",,,"chemical lab, radio-isotope lab (14C, 33P, 3H), flow cytometry lab, microscopy lab (inverted and epifluorescence microscopes, image analysis system), culture/live laboratory, constant temperature room and several general use labs, 26m long research vessel PHILIA, zodiac +","no dormitories, accomodation in hotels +","www.cretacosmos.eu +"," + + + +Cretacosmos facility during the LightDynaMix project (Photo: Stella A Berger) + + + + +Two basins of the Cretacosmos mesocosm facility (Photo: Vivi Pitta) + + + + +Cretacosmos mesocosm facility (Photo: Vivi Pitta) + + + + +  +","['http://mesocosm.org/wp-content/uploads/2017/02/Cretacosmos-facility-during-the-LightDynaMix-project-Photo-Stella-A-Berger-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Two-basins-of-the-Cretacosmos-mesocosm-facility-300x188.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Cretacosmos-mesocosm-facility-Photo-Vivi-Pitta-300x113.jpg']",,,,"['35.3387352', '25.14421260']","{'coordinates': ['35.3387352', '25.14421260']}" +https://mesocosm.org/mesocosm/eawag-experimental-ponds-facility/,Eawag Experimental Ponds Facility,"Eawag, Swiss Federal Institute of Aquatic Science and Technology",Switzerland,Europe,"Eawag, Überlandstrasse 133, 8600 Dübendorf, Switzerland +","Christoph Vorburger +Head of Experimental Ponds Committee +Please login or request access to view contact information. +",2016 – present,"The Experimental Ponds Facility at Eawag in Dübendorf consists of 36 independent ponds made of glass fiber reinforced plastic. The ponds are 1.5 m deep with a shallow end to one side (0.5 m), and they hold up to 15 m3 of fresh water. The ponds can be drained and reset completely between experiments. +","Depending on ongoing experiments: +1. Nutrient loading (phosphorus) +2. Presence/absence of macrophytes +3. Presence/absence of filter feeders (mussels) +4. Ecotypes of added fish +","Ecosystem resilience +Eco-evolutionary dynamics +Ecosystem effects of environmental stressors +Ecoosystem effects of evaporation control +"," + + + + + 47.40515,8.60855 + +",,,"Indoor laboratories for sample processing +Sampling bridges for easy access to water column +Sampling equipment for phyto- and zooplankton +Exo2 Multiparameter Sonds for automated measurement of water quality parameters +","Hotels and Eawag guest house nearby +","https://www.eawag.ch/de/ueberuns/arbeiten-an-der-eawag/forschungsumfeld/versuchsteichanlage/ +"," + + + +Image 1: Eawag’s Experimental Pond Facility in Dübendorf, Switzerland. Picture taken in summer 2016, shortly after the construction of the facility. Photo credit: Christoph Vorburger + + + + +Image 2: Schematic cross-section of an experimental pond. Image credit: Eawag + + + + +Image 3: Scientists taking samples at Eawag’s Experimental Pond Facility in Dübendorf, Switzerland. Photo credit: Eawag + + + + +","['http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-1-300x186.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-2-300x156.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-3-300x174.jpg']",,,,"['47.40515', '8.60855']","{'coordinates': ['47.40515', '8.60855']}" +https://mesocosm.org/mesocosm/lippenbroek-experimental-wetland/,Lippenbroek Experimental Wetland,University of Antwerp,Belgium,Europe,"University of Antwerp + Dep. Biology + Universiteitsplein 1 + 2610 Wilrijk +","Patrick Meire +Please login or request access to view contact information. +",2007 - present,"outdoor – freshwater – benthic/pelagic + Lippenbroek Experimental Wetland is a freshwater CRT (controlled reduced tide) in natura tidal facility, surface 8 ha, formerly used as cropland. Vegetation has been progressively replaced by flood-tolerant species (e.g. Lythrum salicaria, Lycopus europaeus, Salix sp., Typha angustifolia and Phragmites australis). Reconstruction of spring-neap tide flooding variation required the construction of separate inlet and outlet culvert. + Lippenbroek Experimental Wetland is currently well equipped to study water and sediment balances. ADCP discharge sensors and automated sampling equipment at in- and outlet culverts allows for the detailed measurement of in- and outgoing water fluxes and quantification of the water and sediment balance. Ten sampling sites are installed with sediment elevation tables and piezometers. The flexible dimensions of the culverts allow the manipulation of the volume of incoming and outgoing tidal waters and hence manipulate tidal height, inundation frequency and inundation duration. +","Inundation frequency, vegetation, soil nutrients +","Lippenbroek Experimental Wetland is currently the only facility that allows in situ manipulation of various tidal characteristics in such detail and large scale. Multiple sampling sites across the area have been identified, with different elevations, allowing to assess at the sampling spot scale (12 m2) the effect of different flooding frequencies and duration, due to the differences in elevation. +"," + + + + + 51.09284,4.157230 + +",,,"Only one general tidal regime can be installed for the whole area, although a good definition of sampling spots within Lippenbroek (based on the digital elevation map) allows for assessing effects of specific flooding regimes locally in more detail. + The future upgrades include 16 flexible gas exchange measurement setups (CO2, N2O, CH4) fluxes, allowing, a whole ecosystem tower for eddy covariance fluxes of CO2, H2O and CH4, permanent water quaity setups for all major nutrients that can be flexibly deployed, and upgrade of the facilities for flow measurement. +","Lodging possible at University of Antwerp (25 km) or near facility in private accommodation +","www.lippenbroek.be +"," + + + + +Map of Lippenbroek Experimental Weltland + + + + + +Areal view of Lippenbroek Experimental Wetland + + + + + +Construction plan of Lippenbroek Experimental Wetland + + + + + + + + +Lippenbroek Experimental Wetland + + + + + + + + +","['http://mesocosm.org/wp-content/uploads/2017/05/Lippenbroek_5.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lippenbroek_1_314px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lippenbroek_3_400px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lippenbroek_2_400px.jpg']",,,,"['51.09284', '4.157230']","{'coordinates': ['51.09284', '4.157230']}" +https://mesocosm.org/mesocosm/cmu-biological-station-mesocosm-facility/,CMU Biological Station mesocosm facility,"CMU Biological Station, Central Michigan University",USA,North America,"P.O. Box 206, +Beaver Island, +MI 49782 +USA +","Don Uzarski +Please login or request access to view contact information. +",2012 - present," +12 fibreglass tanks each 250 gallons +including metal halide +timer-controlled lights +housed on Lake Michigan with access to epilimnetic and metalimnetic water + +"," +Light +Temperature + +"," +Predator-prey interactions +microplastic impacts +sediment contaminants +macrophyte-phytoplankton interactions +fish behavior +nutrient impacts + +"," + + + + + 45.7422222,-85.50944444444444 + +"," +Invasive species +eutrophication +climate change + +","Laurentian Great Lakes +","YSI multiprobes +","on site +","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx +","photo credits: CMU Communications +",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}" +https://mesocosm.org/mesocosm/ims-metu-mesocosm-system/,IMS-METU Mesocosm System,"Middle East Technical University (METU), Institute of Marine Sciences (IMS)",Turkey,Europe,"Middle East Technical University, Institute of Marine Sciences, +33731, Erdemli, +Mersin, +Turkey +","Dr. Korhan Özkan +Please login or request access to view contact information. +",2021 - present,"IMS-METU mesocosm facility consists of 24 outdoor mesocosms and for stocking tanks mimicking shallow lake or coastal ecosystems. The system allows 3×2 factorial design experiments Each tank is made of polyethylene with a diameter of 2 m and depth of 1.8 m and insulated. Tanks are equipped with dynamic heating systems that can simulate climate change scenarios. Each tank is equipped with real-time sensors for temperature, oxygen, methane, carbon dioxide monitoring. The water column can be mixed with wave makers. Currently each tank has 0.3 m natural lake sediment and 1.2 m of water column and inoculated with natural communities (plankton to fish) from Anatolian coastal and inland Lakes. The facility involves a nearby field laboratory and storage facilities hosting all sampling equipment and basic analysis capacity. +Detailed information is available at the publication: +Özkan, K., Korkmaz, M., Amorim, C. A., Yılmaz, G., Koru, M., Can, Y., … & Jeppesen, E. (2023). Mesocosm Design and Implementation of Two Synchronized Case Study Experiments to Determine the Impacts of Salinization and Climate Change on the Structure and Functioning of Shallow Lakes. Water, 15(14), 2611. +"," +Temperature +mixing +nutrient levels +salinity +species composition if required. + +"," +Climate change effects on ecosystems +extreme events +salinisation +ecosystem ecology + +"," + + + + + 36.564427, 34.254018 + +"," +Ecology of inland and coastal lakes as well as coastal seas + +"," +Aquatic ecology +ecosystem ecology +community ecology +climate change +plankton + +"," +All tanks were equipped with temperature, oxygen, methane and CO2 sensors. +There is a nearby field lab for basic wet-lab requirements such as filtration, alkalinity, Chl-a measurements. +The site includes storage facility for all sampling and maintenance gears. +The institute laboratories are 200 m away and hosting a large analyses capacity (nutrient auto-analyzers, HPLC, ICP-MS, Ion Chromatography, CHN analyzer, TOC-TN analyzer, microscope labs) + +","Lodging may be provided on campus for visiting students and researchers. +","https://ae-ims.metu.edu.tr/ +","The facility includes 24 experimental mesocosm tanks, photo credits: Korhan Özkan +Aerial view of mesocosm system and nearby field laboratory, photo credit: Korhan Özkan +Mesocosm tanks are innoculated with biotic communities, photo credits: Korhan Özkan +Mesocosm tanks are equipped with sensors including GHG measurements, photo credits:Korhan Özkan +Dedicated field laboratory and facilities, photo credits: Korhan Özkan +  +  +","['http://mesocosm.org/wp-content/uploads/2023/12/G0018552_1.9MB-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/WhatsApp-Image-2022-07-27-at-10.33.44-AM-1-1024x576.jpeg', 'http://mesocosm.org/wp-content/uploads/2023/12/G0011377_1.8MB-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/IMG_9936_1.9MB-768x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/G0066411_1.9MB-1024x768.jpg']",,,,"['36.564427', ' 34.254018']","{'coordinates': ['36.564427', '34.254018']}" +https://mesocosm.org/mesocosm/bermuda-marine-mesocosm-facility-bmmf/,Bermuda Marine Mesocosm Facility (BMMF),ASU Bermuda Institute of Ocean Sciences (ASU BIOS),Bermuda,North America,"17 Biological Station, St. George’s GE01, Bermuda +","Dr. Yvonne Sawall +Please login or request access to view contact information. +",since 2019,"The Bermuda Marine Mesocosm Facility (BMMF) is a robust and versatile state-of-the-art outdoor facility for experimental work and organism culturing. +The BMMF provides scientists with an opportunity to conduct research in controlled marine environments under near-natural conditions, meaning natural sun light and seawater that is pumped from the close-by Reach. It has twelve 500-L and four 1500-L experimental basins that can be run simultaneously and are designed with the potential to manipulate a range of environmental factors, such as temperature, light, CO2 concentrations, flow rate, and nutrients. The BMMF provides for a replicated and robust experimental design that is ideal for research on a variety of topics, including, for example, organism eco-physiology and reproduction, biological recovery and ecosystem resilience. +"," +Temperature, light +CO2 +seawater flow-through +filtered/unfiltered seawater + +"," +Effects of ocean warming (marine heat waves) on organisms and communities +Effect of ocean acidification on organisms and communities +Effect of nutrient enrichment on organisms and communities +Effect of hypoxia on organisms and communities +Reproductive biology of, for example, corals and seagrass +Efficacy and effects of marine Carbon Dioxide Removal (mCDR) technologies + +"," + + + + + 32.370636,-64.697763 + +"," +Manipulation experiments under near-natural conditions + +",,"Basins: + +12 x 500-L basins +4 x 1500-L basins – elongated, can be converted into flumes + +  +Light intensity control: + +Roof: Scaffolding holding a waterproof & light permeable (~75%) greenhouse foil +Lids for each basin with exchangeable shading material (e.g., mosquito netting) for further light reduction + +  +Temperature control + +12 x AquaLogic DSHP-9 Heat Pumps, one for each 500-L basin +4 x AquaLogic HS-2 Heat Pumps, one for each 1500-L basin + +  +CO2 supply and pH monitoring + +CO2 supply regulated by mass-flow controllers and directly bubbled into 3 x 200-L flow-through header tanks; flow to individual basins is adjustable +Automated pH measurements in all basins via a centralized pH sensor (DURAFET III, Honeywell Process solution) and remote-controlled pumps. + +  +Water supply and flow + +Total capacity of seawater supply from Reach: 9,000 L/h +2 x 5,500-L header tanks for seawater storage +Sediment filter + +  +Aquarium setup + +30 x 60-L aquaria to be placed inside basins + +  +Electricity + +2 – 4 power outlets (110V) above each basin + +  +Laboratory container + +20-foot shipping container converted into an air-conditioned lab space with cabinets, bench space, various power outlets (110V) and a freshwater sink + +  +Utility golf cart For quick and easy transport of life organisms from the boat to the BMMF and for transport of equipment. +","Various visitor accommodations are available on campus: https://bios.asu.edu/visiting-bios +","https://bios.asu.edu/research/facilities/mesocosm-facility + +  +","Array of heat pumps that control the temperature in basins. They heat and chil depending on what is required, photo credits: Yvonne Sawall +Mesocosm overview showing ~3/4 of the facility; photo credits: Yvonne Sawall +One of the four 1500-L basins hosting coral fragments.; photo credits: Yvonne Sawall +Three 40-L aquaria inside a 500-L basin, each hosting coral fragments. ; photo credits: Chloe Carbonne +","['http://mesocosm.org/wp-content/uploads/2024/11/B31560D9-B8BA-4EA4-9665-B13B46E9372A-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/11/2009F839-BFBF-4D3A-885D-30A359409B74-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/11/6DC60F28-580A-4046-91C5-4C57088CE81F-768x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2024/11/2CCD8F84-538A-40A1-9507-74E4794C3B3A-1024x768.jpg']",,,,"['32.370636', '-64.697763']","{'coordinates': ['32.370636', '-64.697763']}" +https://mesocosm.org/mesocosm/limnotrons/,Limnotron,Netherlands Institute for Ecology (NIOO-KNAW),The Netherlands,Europe,"Netherlands Institute for Ecology (NIOO) + Droevendaalsesteeg 10 + 6708 PB Wageningen +","L.N. de Senerpont Domis +Please login or request access to view contact information. +",2001 - present,"indoor/outdoor – pelagic – freshwater + Limnotrons, outdoor enclosure facility, 36 experimental ponds +  +The limnotrons are 9 stainless steel indoor mesocosms with a high level of control. The dimensions of these vessels are: 0.97 m in diameter, a depth between 1.32 m (side) and 1.37 m (centre), and a volume of 922 L. The vessels can be closed with a removable PMMA flange lid. In addition to the possibility to sample vertically with specifically designed integrated water samples, sampling can also be done by using the sampling ports positioned on three depths. If needed, mixing of the water column can take place by an impeller made of +PMMA, with a stainless steel axis, and a silicon rubber strip between the outside and the Limnotron wall to prevent wall growth. To create a different type of mixing more tailored to growth of cyanobacterial scums, oscillating grids have been designed. Originally designed to study pelagic communities, the Limnotrons have been adapted to allow for a benthic community as well. At present, each Limnotron can have a sediment layer of 10-15 cm, and with the recently purchased high intensity lights, a macrophyte community can be established in these mesocosms. +A unique feature of the limnotrons is the temperature regulation with separate upper and lower temperature blocks to allow for thermal stratification. A thermostatically regulated microprocessor-controlled cooling and heating installation controls the temperature of each of the vessels individually at 0.1 oC SE. The temperature program allows for running complicated temperature scenarios, including episodic events. Temperature is logged every minute.  Because of possible volume differences due to temperature settings, evaporation losses and sampling, a (refillable) expansion vessel was developed, which maintains a constant water volume in the experimental vessel. In addition, CO2 levels can be manipulated as well, by providing different CO2 /air mixtures with a WITT KM60-2ME gas mixer. +","Temperature, Light, Mixing regime, CO2 +","The Limnotrons can be used to test the effect of warming, eutrophication and CO2 elevation on carbon cycling, stoichiometry of different trophic groups, nutrient balances, metabolism, adaptation and microevolution and community structure of phytoplankton, zooplankton, macrofauna, periphyton and macrophytes. +"," + + + + + 51.9876442,5.6706486 + +",,,"Advanced analytical equipment, including a number of flow cytometers (e.g. flowcytometry, Cytobuoy, FlowCam, IRMS, molecular lab), which use laser technology to identify, count, and sort algae, bacteria, and protozoa at high speed. + +• Fluorescence microscopy +• Autoananalyzer for dissolved nutrients +• Multichannel probes for simultaneous measurements of oxygen, light, pH, conductivity and temperature +• Phytopam fluorometer +• Coulter particle counter +• Flowcytometer for analysis of phyto- and bacterioplankton (<90 micron) +• FLOWcam for automated analysis of larger celled phyto- and zooplankton +• Elemental analyser to measure particulate C and N +• IRMS to to measure the relative abundance of isotopes +• ICP-MS for detecting trace elements +• LC-MS/MS for detecting e.g. cyanotoxins +• GC-MS/MS for detecting volatiles + +•          State-of the art molecular lab +","No inhouse lodging available +","http://www.nioo.knaw.nl/en/node/280 +"," + + + + +Limnotron – a highly controlled experimental unit + + + + +","['http://mesocosm.org/wp-content/uploads/2017/02/Limnotron_400px2-300x214.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Limnotrons_400px1-268x300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/Limnotron-a-highly-controlled-experimental-unit-300x225.jpg']",,,,"['51.9876442', '5.6706486']","{'coordinates': ['51.9876442', '5.6706486']}" +https://mesocosm.org/mesocosm/aqua-stress/,Aqua-stress,University of Canberra,Australia,Australia,"Institute for Applied Ecology, Faculty of Science and Technology +University of Canberra, Bruce, ACT, 2617, Australia +","Jon Bray +Please login or request access to view contact information. +Ben Kefford +Please login or request access to view contact information. +",2016 to present,"The system consists of 32 independent circular freshwater mesocosms each of 1000 L capacity. They can be used either with flowing water i.e. a stream mesocosm (using a pump in each mesocosm to create the flow) or as a pond mesocosm (without the pump). The mesocosms are re-circulating (i.e. non-flow through). A float value ensures that any water lost through evaporation is replaced. +","Controlled parameters are experiment dependent. Experiments to date have manipulated: salinity, the proportions of major ions (i.e. the ions that make up salinity), nutrients (N and P), sedimentation, pesticide concentration and sources of biota. +",," + + + + + -35.23511, 149.086653 + +","Examination of multiple stressors in freshwaters. +","Effects of multiple physico-chemical stressors such as: salinity (major ions), pesticides nutrients and sediment. Role of biotic interactions in altering effects of chemicals. +","Consists of 32 fully independent mesocosms each of 1000 L capacity with mains electricity supply for an electric submersible pump (1400 L/hr). Each mesocosm is plumbed into dechlorinated Canberra tap water. +","Commercially available nearby. +","https://www.canberra.edu.au/research/institutes/iae +Bray, J. P., J. Reich, S. J. Nichols, G. Kon Kam King, R. Mac Nally, R. Thompson, A. O’Reilly-Nugent & B. J. Kefford, 2019. Biological interactions mediate context and species-specific sensitivities to salinity. Philosophical Transactions of the Royal Society of London B 374(1764): 20180020. doi: http://dx.doi.org/10.1098/rstb.2018.0020. +"," + + + +Credit: Jon Bray + + + + +Credit: Jon Bray + + + + +Credit: Alica Tschierschke + + + + +","['http://mesocosm.org/wp-content/uploads/2019/03/Aqua-stress-1-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Aqua-stress-2-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Aqua-stress-3-300x200.jpg']",,,,"['-35.23511', ' 149.086653']","{'coordinates': ['-35.23511', '149.086653']}" +https://mesocosm.org/mesocosm/mesocosm-gmbh/,MESOCOSM GmbH,Institut für Gewaesserschutz,Germany,Europe,"Institut für Gewaesserschutz + Neu-Ulrichstein 5 + D-35315 Homberg (Ohm) +","Prof. Dr. Klaus Peter Ebke +Please login or request access to view contact information. +",,"outdoor – pelagic/benthic – freshwater +18 to 25 land-based microcosms/mesocosms +","toxins +","ecotoxicilogy, phytoplankton, macrozoobenthos, emerging insects, plankton, macrophytes, periphyton +"," + + + + + 50.7527558,9.0331164 + +",,,"Analysis of physical-chemical parameters e.g. temperature, pH, conductivity, dissolved oxygen, water hardness, ammonium, nitrate and phosphate + Especially designed traps and equipment is used to monitor biological parameters like macrozoobenthos, emerging insects, plankton, macrophytes and periphyton by a well trained team to ensure consistent and appropriate sampling processes. + At MESOCOSM GmbH we can identify and count phytoplankton and periphyton via microscope, but also by using delayed fluorescence technique. This allows a close observation of the development of the algae community. +",,"http://www.mesocosm.de/Test-facility.74.0.html +"," + + + + +Mesocosm GmbH – schematic design of the test facility + + + + + +Mesocosm test basins + + + + +","['http://mesocosm.org/wp-content/uploads/2017/05/test-facility-mesocosmGmbH.de_.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/mesocosmGmbH.de_.jpg']",,,,"['50.7527558', '9.0331164']","{'coordinates': ['50.7527558', '9.0331164']}" +https://mesocosm.org/mesocosm/pohang-mesocosm-system/,Pohang Mesocosm System,Pohang University of Science and Technology,South Korea,Asia,"Pohang University of Science and Technology + 77 CHEONGAM-RO.NAM-GU. + POHANG.GYUNGBUK. + KOREA +","Prof. Kitack Lee +Please login or request access to view contact information. +",,"outdoor – pelagic – marine + The facility consists of a floating raft, nine impermeable enclosures with transparent caps, nine pCO2 regulation units, and nine bubble-mediated seawater mixers +","CO2, pH, nutrients +","Ocean acidification +"," + + + + + 34.886946,128.623892 + +",,,,,"http://climate.postech.ac.kr/board/view.do?iboardgroupseq=4&iboardmanagerseq=12 +",,,,,,"['34.886946', '128.623892']","{'coordinates': ['34.886946', '128.623892']}" +https://mesocosm.org/mesocosm/national-experimental-platform-in-aquatic-ecology-planaqua/,National Experimental Platform in Aquatic Ecology (PLANAQUA),,France,Europe,"Ecole Normale Supérieure (ENS) + National Centre of Scientific Research (CNRS) + Université Pierre et Marie Curie (UPMC) + Université Paris Sud (UPS) +","Gerard Lacroix +Please login or request access to view contact information. +",2012 - present,"outdoor/indoor- pelagic /littoral – freshwater/marin + 1) The Experimental Lake Platform consists of 16 artificial lakes (30 m x 15 m x 3 m deep, 800 m3each) conceived for incorporating the natural complexity of the environment and the spatially heterogeneous nature of ecological processes in natural ecosystems. These large experimental systems are spatially structured, with shallow littoral areas, a central pelagic zone and a central benthic area, and may be interconnected by groups of 4 lakes through 10 m long dispersal channels. The artificial lakes will be equipped in Autumn 2014 with automated sensors and data loggers. + The two other artificial reservoirs (126 m x 15 m x 3 m deep, 4000 m3) are a stocking lake (south) used to homogenize water before distribution to experimental lakes or mesocosms and a drainage lake (north) that can collect and purify used water at the end of experiments. + 2) A large number of mesocosms, from a few hundreds of liters to a few tens of m3, high degree of replication; Floating mesocosms installed on the stocking lake; more than 60 tanks installed outdoors and equipped with devices for the experimental control of thermal gradients and water mixing;  beaters that generate waves, control of the physical structure of the water column. + 3) Microcosms from one to several litres of volume for continuous cultures experiments; climatic chambers of the Ecotron IleDeFrance (precise conditioning of the environment and the detailed monitoring of states and activities of organisms and ecosystems) to study marine or freshwater ecosystems (plankton, benthos, macrophytes) under highly controlled environmental conditions.  A series of dedicated sensors enables monitoring of gas exchange (O2 and CO2) between the air and the water in the experimental system. +","temperature, mixing, fish, nutrients, waves, irradiance, gas concentrations +","Effects of human disturbances on aquatic biodiversity, community structure and ecosystem functioning. Long-term study of the bottom-up and top-down control of the functioning of complex communities with heterogeneous spatial distributions, consequences of anthropogenic pressures on biodiversity, up to the species at the top of the food web. Studies of the link between physical constraints and the functioning of aquatic systems. +"," + + + + + 48.287979,2.6759703 + +",,,"Instruments and equipment available in the labs include flowcytometer, spectrophotometer, growth cabinets, laminar flow hood, fume hood, -20°C and -80°C freezers, autoclave, oven, liquid nitrogen, distilled and ultrapure water, microscopes, centrifuge, precision balances, algae culture facilities, FlowCAM, etc. Field equipment includes samplers, fixed sensors, multi-parameters probes, BBE fluorimetric probes, BBE benthotorch, small boats, etc. Some experiments with fish may also be conducted in a fish house. +","CEREEP – Ecotron Ile de France is able to host up to 30 sleeping guests (12 double rooms and a dormitory for students). In addition, through cooperation with the laboratories associated in the PLANAQUA project, the CEREEP – Ecotron Ile de France may favour collaboration with other laboratories in Ile-de-France and access to other facilities. +","http://www.foljuif.ens.fr +"," + + + +Graphic of the PLANAQUA facility + + + + + + +","['http://mesocosm.org/wp-content/uploads/2017/02/Saint-Pierre_PLANAQUA-300x206.png', 'http://mesocosm.org/wp-content/uploads/2017/02/Plamaqua_Mesocosms_8.14-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Bild1-225x300.jpg']",,,,"['48.287979', '2.6759703']","{'coordinates': ['48.287979', '2.6759703']}" +https://mesocosm.org/mesocosm/cer-mesocosms/,CER Mesocosms,Centre for Ecological Research,Hungary,Europe,"Centre for Ecological Research +H-1113 Budapest, Karolina út 29. +Hungary +","Dr. Zsófia Horváth +Please login or request access to view contact information. +  +Dr. Csaba Vad +Please login or request access to view contact information. +",2019 - present,"Mobile outdoor facility, with 40 (300-litre each) + 96 mesocosms (220-litre each). +Heating is available on-site. +Possibility to carry out in situ experiments (within natural ponds or lakes). +"," +Temperature +nutrient level +species composition +connectivity + +"," +Plankton and benthic biodiversity +metacommunity ecology +trophic relationships +pond ecology +Role of stressors: climate change, invasive species, habitat fragmentation + +"," + + + + + 47.705993,19.229583 + +",,," +Temperature loggers and control +airlift +access to analytical and molecular labs + +","CER guest rooms +","https://ecolres.hu/en/home/ +https://metacomlab.com/ +"," + + + +  +CER mesocosms: land-based experiment (photo credit: Ádám Fierpasz) + + + + +CER mesocosms: in situ experiment (photo credit: Zsófia Horváth) + + + + +CER mesocosms: in situ experiment (photo credit: Zsófia Horváth) + + + + +","['http://mesocosm.org/wp-content/uploads/2023/07/DJI_0203-fotor-20230722131035-1024x637.jpg', 'http://mesocosm.org/wp-content/uploads/2021/05/3.m-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2021/05/4.m-1024x682.jpg']",,,,"['47.705993', '19.229583']","{'coordinates': ['47.705993', '19.229583']}" +https://mesocosm.org/mesocosm/consortium-gwrc-mesocosm-facility/,Great Waters Research Consortium (GWRC) mesocosm facility,"Natural Resources Research Great Waters Research Institute (NRRI), University of Minnesota Duluth; Lake Superior Research Institute (LSRI), University of Wisconsin Superior (joint project)",USA,North America,"Montreal Pier Rd, +Superior, WI 54880 +USA +","Euan Reavie (NRRI) +Please login or request access to view contact information. +",2016 - present," +22 x 1m3, 40 x 20L +Closed system, recirculating +Indoor +Fluorescent lighting, timed +Duluth-Superior Harbor water source, filled simultaneously +Permitted for invasives + +"," +Temperature +light +species added + +","Invasion dynamics +"," + + + + + 46.7109,-92.0484 + +","Invasive species +",,,"not on site +","https://www.uwsuper.edu/lsri/gwrc/index.cfm +"," + + + +Photo credits: Euan D. Reavie + + + + +Photo credits: Euan D. Reavie + + + + +Figure credits: Euan D. Reavie + + + + +","['http://mesocosm.org/wp-content/uploads/2022/09/pic1.2-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2022/09/pic2.2-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2022/09/pic3-1-1024x625.jpg']",,,,"['46.7109', '-92.0484']","{'coordinates': ['46.7109', '-92.0484']}" +https://mesocosm.org/mesocosm/bolmen-forskningsstation/,Bolmen Forskningsstation,Sweden Water Research AB,Sweden,Europe,"Sweden Water Research AB +Ideon Science Park Scheelevägen 15 +SE-223 70 Lund +","Linda Parkefelt +Please login or request access to view contact information. +",2017 - present," +Open access to national and international researchers. +Outdoor, freshwater, lake deployed in an adaptable jetfloat. +PE-film enclosures or 20 hardshell PE enclosures (ø = 0.9m, depth = 1.5m, volume = 700L). + +",,"Advance general understanding in ecology. Topics: biodiversity-functioning-stability relationships, community ecology, food web interactions and benthic-pelagic dynamics. Possibility to combine experimental research with historical lake monitoring data from Lake Bolmen (e.g., phytoplankton, zooplankton, fish, temperature measurements and others). +"," + + + + + 56.943190, 13.645610 + +",,,"Apogee SQ-500 (PAR), CTG Trilux fluorometer (chlorophyll-a, phycocyanin and turbidity) and Aanderaa 4531 optode (O2 and temperature) sensors fulltime deployed in each enclosure. CR1000 dataloggers and AM16/32B multiplexers. Possibility to develop Internet interface for collected data. One AP-2000 AquaRead Multiprobe (http://www.aquaread.com/portofolio/ap-2000/) and one Apogee MQ-500 (PAR) with handheld meters. +","Capacity in site (Bolmen Forskningsstation) up to 5-6 people with general facilities needed for accommodation. +"," +Tänk H2O: http://sydvatten.se/stipendiet-tank-h20/ +SITES: http://www.fieldsites.se/en-GB + +"," + + + +Photo credit: Juha Rankinen + + + + +Photo credit: Juha Rankinen + + + + +","['http://mesocosm.org/wp-content/uploads/2018/05/Bolmen_2-1024x577.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Bolmen_3-1024x577.jpg']",,,,"['56.943190', ' 13.645610']","{'coordinates': ['56.943190', '13.645610']}" +https://mesocosm.org/mesocosm/sinderhoeve/,Sinderhoeve,Wageningen Environmental Research,The Netherlands,Europe,"Telefoonweg 77 +6871NJ Renkum +The Netherlands +","Dr ir Ivo Roessink +ivo.roessink@wur.nl +  +",1990 - present,"outdoor – pelagic/benthic – freshwater +A variety of land-based systems ranging from 40 m long 55 m3 experimental ditches, four types of ponds of different sizes to 100 L microcosms. All is situated on a 11 ha fenced off test site and there are always possibilities to construct new systems if required by the research question. +"," +Toxins & chemicals +Invasive aquatic species + +"," +ecotoxicology +aquatic ecology +invasive aquatic species +remediation research + +"," + + + + + 51.998681, 5.752708 + +"," +ecotoxicology +aquatic ecology +invasive aquatic species +remediation research + +"," +ecotoxicology +aquatic ecology +aquatic invasive species +turtles +freshwater crayfish +phytoplankton +zooplankton +microbial community +macrozoobenthos +emerging insects +macrophytes +periphyton + +","Several aquatic test systems of different volume are available on site including all materials to sample plankton, macrobenthos and emerging insects. pH, DO, T and EC meters plus alkalinity measurements can be performed on site. In addition, a small lab facility is present where several small lab equipment such as ovens, fume hood and microscopes are available. +","Not available on site. A variety of housing possibilities is available on the campus of Wageningen University and the town of Wageningen or its surroundings. +","www.sinderhoeve.org +  +"," + + + +Foto credit: Wageningen Environmental Research + + + + +Foto credit: Wageningen Environmental Research + + + + +Foto credit: Wageningen Environmental Research + + + + +SInderhoeve areal; Figure cerdit: Wageningen Environmental Research +  + + + + +  +","['http://mesocosm.org/wp-content/uploads/2018/11/Foto-sloten-sinderhoeve-1024x697.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/DSC02496-768x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/IMG_2919-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/Perspectief-Sinderhoeve-kl-1024x679.jpg']",,,,"['51.998681', ' 5.752708']","{'coordinates': ['51.998681', '5.752708']}" +https://mesocosm.org/mesocosm/iberian-pond-network-ipn/,Iberian Pond Network (IPN),"InBio/CIBIO, University of Évora","Portugal, Spain",Europe,"InBio/CIBIO, University of Évora, Largo dos +Colegiais, 7000 Évora, Portugal +","Prof. Miguel B. Araújo +Dr. Miguel Matias +Please login or request access to view contact information. +",2014 to present,"outdoor – pelagic/benthic – freshwater +192 mesocosms deployed across six regions. The mesocosms consist of 1000-L tanks that mimic small ponds. In each location, there are 32 mesocosms installed ca. 3-5 meters apart. +","Water volume, temperature, chlorophyll, turbidity, pH, oxygen, methane. +","Climate change, biogeography, biotic interactions, ecosystem functioning +"," + + + + + + + + + 41.1465479,-8.6156998;38.5685819,-7.9107097 + +",,,"Temperature loggers +",,"http://www.maraujolab.com/iberianponds/ +"," + + + +Distribution of mesocosm experimental sites in the Iberian Peninsula + + + + +Évora – Herdade da Mitra (Portugal) + + + + +Toledo – La Higueruela Experimental Farm (Spain) + + + + +","['http://mesocosm.org/wp-content/uploads/2017/02/IberanPondProject_400x1-300x253.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/charcas_evora_3_295.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/charcas_higueruela_3_295.jpg']",,,,"['41.1465479', '-8.6156998']","{'coordinates': ['41.1465479', '-8.6156998']}" +https://mesocosm.org/mesocosm/iberian-pond-network-ipn/,Iberian Pond Network (IPN),"InBio/CIBIO, University of Évora","Portugal, Spain",Europe,"InBio/CIBIO, University of Évora, Largo dos +Colegiais, 7000 Évora, Portugal +","Prof. Miguel B. Araújo +Dr. Miguel Matias +Please login or request access to view contact information. +",2014 to present,"outdoor – pelagic/benthic – freshwater +192 mesocosms deployed across six regions. The mesocosms consist of 1000-L tanks that mimic small ponds. In each location, there are 32 mesocosms installed ca. 3-5 meters apart. +","Water volume, temperature, chlorophyll, turbidity, pH, oxygen, methane. +","Climate change, biogeography, biotic interactions, ecosystem functioning +"," + + + + + + + + + 41.1465479,-8.6156998;38.5685819,-7.9107097 + +",,,"Temperature loggers +",,"http://www.maraujolab.com/iberianponds/ +"," + + + +Distribution of mesocosm experimental sites in the Iberian Peninsula + + + + +Évora – Herdade da Mitra (Portugal) + + + + +Toledo – La Higueruela Experimental Farm (Spain) + + + + +","['http://mesocosm.org/wp-content/uploads/2017/02/IberanPondProject_400x1-300x253.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/charcas_evora_3_295.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/charcas_higueruela_3_295.jpg']",,,,"['38.5685819', '-7.9107097']","{'coordinates': ['38.5685819', '-7.9107097']}" +https://mesocosm.org/mesocosm/aquatic-research-facility-at-the-university-of-kansas-field-station/,Aquatic Research Facility at the University of Kansas Field Station,University of Kansas Field Station,USA,North America,"350 Wild Horse Road, Lawrence, KS 66044, USA +","Ted Harris +Please login or request access to view contact information. +",40,"The Aquatic Research Facility at the KU Field Station provides a physical platform for a broad range of field‐based research. Experimental ponds and tanks (mesocosms) function as surrogates of the natural environment and permit replication of treatments and controls. They allow rigorous tests of ecological relationships, which otherwise can be difficult to identify in natural settings. +Outdoor facilities: The Aquatic Research Facility was developed in stages over a 40-year period.  It now is one of the largest aquatic research facilities in the U.S. and is used to address both basic and applied research questions. +Major components of the Aquatic Research Facility infrastructure include 100 experimental ponds ranging in size from 0.01 to 0.8 hectares; 77 ponds are 0.045 hectares, and 10 are 0.01 hectares. These ponds are filled/drained from the bottom, which allows ponds to function as experimental wetlands or lentic systems. +In addition, the facility has 80 large, 11‐cubic‐meter fiberglass tanks and a variety of enclosures that can be used for in situ experiments in any of the ponds. Experimental short flow through streams can also be constructed and used on site. +On a larger scale, Cross Reservoir (Surface area 3 hectares, 12 meters deep, 50-hectare watershed) serves as a model of small Midwestern reservoirs. Details on the biotic and abiotic conditions in Cross can be found in deNoyelles et al. 2016. +Experimental aquatic systems such as these effectively simulate lakes and reservoirs in central North America. Small ponds are a critical link between aquatic and terrestrial habitats because they often are the first type of aquatic habitat to receive nonpoint source pollutants. +Indoor facilities: A 325-square-meter greenhouse/mesocosm building, constructed in 2013, provides modern climate‐ controlled space that facilitates year‐round aquatic studies. A freestanding 110-square-meter aquatic research laboratory provides a space for sample preparation and analyses and is equipped with a flow-through water supply from the pond infrastructure. In addition, the Armitage Education Center has adjacent wet and dry laboratory facilities, a full kitchen, showers, laundry, classroom, and meeting space to accommodate up to 55 people. Two sleeping cabins are available to researchers for longer overnight stays. +","Our outdoor and indoor facilities allow a multitude of parameters to be manipulated or controlled at varying scales. Water used in experiments is discarded to a series of catchment reservoirs on-site. Catchment reservoirs have long residence times, which allows for degradation of herbicides/pesticides/pharmaceuticals with relatively short half-lives. +Additionally, power is available at many of the ponds, allowing researchers to run large equipment within ponds/tanks for long time scales if needed. +","Research topics have included: + +Cyanobacteria blooms and associated cyanotoxins +Effects of herbicides, pesticides, and pharmaceutical products on algal, zooplankton, and fish communites +Algal biofuels +Environmental DNA fate and transport +Ecological and biological stoichiometry +Deep Chlorophyll Maxima (DCM) and algal migration +Persistent pollutant degradation rates and processes +Emergent insects +Endangered species +Fish competition and predation +Trophic cascades/complex interactions + +"," + + + + + 39.048918,-95.191171 + +","Effects of pollutants – nutrients, herbicides, pesticides, pharmaceuticals, and personal care products – on aquatic ecosystems and their complex interactions.  +",,"Equipment housed at the field station—tractors, mowers, loaders, water haulers, off-road vehicles, fire rigs (in case researchers wish to examine the response of aquatic systems to specific terrestrial/watershed fire regimes)—is used to implement and maintain research projects. + +","The Armitage Education Center at the KU Field Station has adjacent wet and dry laboratory facilities, a full kitchen, showers, laundry, and classroom and meeting space to accommodate up to 55 people. Two sleeping cabins are available to researchers for longer overnight stays. + +","https://biosurvey.ku.edu/field-station/brochures +Publications: + + + + +Whittemore, D., and W.D. Kettle. 2016. Symposium overview: Ecology and climate change research at Kansas natural areas and field stations. Transactions of the Kansas Academy of Science 119:1-4. + + + + +deNoyelles, F., Smith, V.H., Kastens, J.H., Bennett, L., Lomas, J., Knapp, C., Bergin, S., Dewey, S., Chapin, B., Graham, D. 2016. A 21-year record of vertically migrating subepilimnetic populations of Cryptomonas spp. Inland Waters 6: 173-184. + + + + +Kettle, W.D. 2016. The University of Kansas Field Station: A platform for studying ecological and hydrological aspects of climate change. Transactions of the Kansas Academy of Science 119:12-20. + + + + +Turner, C.R., K.L. Uy, and R.C. Everhart. 2014. Fish environmental DNA is more concentrated in aquatic sediments than surface water. Biological Conservation. 2014. http://dx.doi.org/10.1016/j.biocon.2014.11.017 + + + + +Turner, C.R., D.J. Miller, K.J. Coyne, and J. Corush. 2014. Improved methods for capture, extraction, and quantitative assay of environmental DNA from Asian Bigheaded Carp (Hypophthalmichthys spp.) PLoS ONE 9(12): e114329. doi: 0.1371/journal.pone.0114329 + + + + +Fortier, M-O.P., G.W. Roberts, S.M. Stagg-Williams, and B.S.M. Sturm. 2014. Life cycle assessment of bio-jet fuel from hydrothermal liquefaction of microalgae. Applied Energy 122:73–82. + + + + +Bode, C., M. Criss, A. Ising, S. McCue, S. Ralph, S. Sharp, V. Smith, and B. Sturm. 2014. Pond power: How to use algae to energize inquiry and interdisciplinary connections. The Science Teacher 81(2). + + + + +Smith, V.H. 2014. Progress in algae as a feedstock for bioproducts. Industrial Biotechnology 10(3):159-161. + + + + +Cochran, F. V. and N. A. Brunsell. 2012. Temporal scales of tropospheric CO2, precipitation, and ecosystem responses in the central Great Plains. Remote Sensing of Environment 127: 316-328. + + + + +Petrie, M. D. and N. A. Brunsell. 2012. The role of precipitation variability on the ecohydrology of grasslands. Ecohydrology doi:10.1002/eco.224, 5, 337-345. + + + + +Knapp, C. W., W. Zhang, B. S. M. Sturm, D. W. Graham. Differential fate of erythromycin and beta-lactam resistance genes from swine lagoon waste under different aquatic conditions. Environmental Pollution. Volume 158, Issue 5, May 2010, 1506–1512. DOI: 10.1016/j.envpol.2009.12.020 + + + + +Hanson, M.L., C.W. Knapp, and D.W. Graham. 2006. Field assessment of oxytetracycline exposure to the freshwater macrophytes Elodea dense (Pianch.) and Ceratophyllum demersum L. Environmental Pollution 141:434-442. + + + + +Knapp, C.W., L.A. Cardoza, J. Hawes, E.M.H. Wellington, C.K. Larive, and D.W. Graham. 2005. Fate and effects of Enrofloxacin in aquatic systems under different light conditions. Environmental Science and Technology 39:9140-9146. + + + + +Knapp, C.W., L. Lagadic, T. Caquet, M.L. Hanson, and D.W. Graham. 2005. Response of water column microbial communities to sudden exposure to Deltamethrin in aquatic mesocosms. FEMS Microbiological Ecology 54:157-165. + + + + +Knapp, C.W. and D.W. Graham. 2004. Development of alternate ssu-rRNA probing strategies for characterizing aquatic microbial communities. Journal of Microbial Methods 56:323-330. + + + + +Lennon, J.T., V. Smith, A. Dzialowski. 2003. Invasibility of plankton food webs along a trophic state gradient. Oikos 102:191-203. + + + + +Ferrington, L.C., Jr. 2003. Studying intermittent streams. Ch. 4, pp. 46-64 in “Functions of Intermittent Streams: A Guidance Document for the Technical Information Workshop.” Proceedings, North American Benthological Society, Athens, GA, May 2003. + + + + +Ensz, A.P., C.W. Knapp, and D.W. Graham. 2003. Influence of autochthonous dissolved organic carbon and nutrient limitation on alachlor biotransformation in aerobic aquatic systems. Environmental Science and Technology 37:4157-4162. + + + + +Kettle, W., R. Hagen, J. deNoyelles, E. A. Martinko. 2001. The University of Kansas Field Station and Ecological Reserves: A Half Century of Research and Education. Kansas Biological Survey, Lawrence, KS Miscellaneous Publication Number 9:68 pp. —  + + + + +Graham, W.D., J. deNoyelles. 1995. The role of methanotrophic bacteria in aquatic bioremediation in a Kansas reservoir. Department of the Interior No. 3187:50 pp. + + + + +Goldhammer,D.S., C.A. Wright, M.A. Blackwood, and L.C. Ferrington Jr. 1992. Composition and phenology of Chironomidae from the Nelson Environmental Study Area, University of Kansas. Netherlands Journal of Aquatic Ecology 26(2-4):281-291. + + + + +Liechti, P., D. Huggins. 1991. Selected aquatic insects of the Kansas Ecological Reserves. Kansas Academy of Science Multidisciplinary Guidebook 4. Lawrence, KS:Kansas Geological Survey. —  + + + + +Kettle, W., D.O. Whittemore. 1991. Ecology and Hydrology of the Kansas Ecological Reserves and Baker Wetlands. Ecology and Hydrology of the Kansas Ecological Reserves and Baker Wetlands. Lawrence, KS:Kansas Geological Survey. 1-125. + + + + +Kettle, W. 1991. Kansas Ecological Reserves–An overview. Ecology and Hydrology of the Kansas Ecological Reserves and Baker Wetlands. Lawrence, KS:Kansas Geological Survey. 20-22. —  + + + + +Wright, C.A., D.S. Goldhammer, M.A. Blackwood, and L.C. Ferrington Jr. 1991. Chironimids of the Nelson Environmental Study Area. In Ecology and Hydrology of the Kansas Ecological Reserves and the Baker University Wetlands, W.D. Kettle and D.O. Whittemore (eds.), KGS Open-File Report 91-35, pp. 98-102. + + + + +Huggins, D.G. and M.L. Johnson. 1991. Ecological consequences of the control and elimination of macrophytes in small ponds by atrazine and grass carp. Proceedings from the Regional Lake Management Conference, Des Moines, IA, June 1991 pp. 124-148. + + + + +Kettle, W.D. and D.O. Whittemore. 1991. Ecology and Hydrogeology of the Kansas Ecological Reserves and the Baker University Wetlands. Kansas Geological Survey Open-File Report 91-35. + + + + +Whittemore, D.O. 1991. Hydrogeology of the natural areas. In Ecology and Hydrology of the Kansas Ecological Reserves and the Baker University Wetlands, W.D. Kettle and D.O. Whittemore (eds.), KGS Open-File Report 91-35, pp. 10-19. + + + + +Kettle, W., J. deNoyelles. 1990. Determination of herbicide-induced alterations of aquatic habitats in Kansas. Department of the Interior No. 272:53 pp. + + + + +Randtke, S.J., F. deNoyelles Jr., J.E. Denne, L.R. Hathaway, R.E. Miller, A.S. Melia, and C.E. Burkhead. 1988. Source control of THM precursors. In Proceedings of the Annual Conference of the American Water Works Association. 14-18 June 1988. Kansas City, MO, pp. 1545-1575. + + + + +Randtke, S.J., F. deNoyelles Jr., C.E. Burkhead, R.E. Miller, J.E. Denne, L.R. Hathaway, and A.S. Melia. 1988. Trihalomethane precursors in Kansas water supplies: occurrence, source control measures, and impacts on drinking water treatment. In Proceedings of the Thirty-Eighth Annual Environmental Engineering Conference. 3 February 1988. University of Kansas, Lawrence, KS, pp. 47-89. + + + + +Randtke, S.J., F. deNoyelles Jr., and C.E. Burkhead. 1987. Trihalomethane precursors in Kansas lakes: sources and control. Phase II. Contribution Number 266. Kansas Water Resources Research Institute, University of Kansas, Lawrence, KS, pp. 1-188. + + + + +Hambright, K.D., R.J. Trebatoski, R.W. Drenner, W. Kettle. 1986. Experimental study of the impacts of bluegill (Lepomis macrochirus) and largemouth bass (Micropterus salmoides) on pond community structure. Canadian Journal of Fisheries and Aquatic Sciences 43(6):1171-1176. + + + + +Dewey, S.L. 1986. Effects of the herbicide atrazine on aquatic insect community structure and emergence. Ecology 67(1):148-162. + + + + +Randtke, S.J., F. deNoyelles Jr. and C.E. Burkhead. 1986. Trihalomethane precursors in Kansas lakes: sources and control (Report of year one results). Contribution Number 255. Kansas Water Resources Research Institute, University of Kansas, Lawrence, KS, pp. 1-114. + + + + +Stay, F.S., D.P. Larsen, A. Katko, and C.M. Rohm. 1985. Effects of atrazine on community level responses in Taub microcosms. In T.P. Boyle, (ed.), Validation and Predictability of Laboratory Methods for Assessing the Fate and Effects of Contaminants in Aquatic Ecosystems. American Society for Testing and Materials, Philadelphia, PA, Special Technical Publication. + + + + +Drenner, R.W., S.B. Taylor, X. Lazzaro, W. Kettle. 1984. Particle-grazing and plankton community impact of an omnivorous cichlid. Transactions of the American Fisheries Society 113:397-402. + + + + +Riessen, H.P., W.J. O’Brien, and B. Loveless. 1984. An analysis of the components of Chaoborus predation on zooplankton and the calculation of relative prey vulnerabilities. Ecology 65(2):514-522. + + + + +Wright, D.I. and W.J. O’Brien. 1984. The development and field test of a tactical model of the planktivorous feeding of white crappie (Pomoxis annularis). Ecological Monographs 54(1):65-98. + + + + +Reinke, D.C. 1983. Algae collected by Rufus H. Thompson, II: Parallela novae-zelandiae, first report from North America. Technical Publications of the State Biological Survey of Kansas, University of Kansas 13:22-23. + + + + +deNoyelles, J., W. Kettle. 1983. Site studies to determine the extent and potential impact of herbicide contamination in Kansas waters. Kansas Water Resources Research Institute Contribution No. 239:1-37. + + + + +deNoyelles, J., W. Kettle, A.M. Kadoum. 1982. Plankton responses in experimental ponds to atrazine, the most heavily used pesticide in the United States. Environmental Protection Agency 14 pp. + + + + +deNoyelles, J., W. Kettle. 1980. Experimental pond studies demonstrating the development of responses to a herbicide (atrazine) resulting from altered interactions among plankton species. Environmental Protection Agency 50 pp. + + + + +Lei, C.H. and K.B. Armitage. 1980. Ecological energetics of a Daphnia ambigua population. Hydrobiologia 70:133-143. + + + + +Lei, C.H. and K.B. Armitage. 1980. Energy budget of Daphnia ambigua Scourfield. Journal of Plankton Research 2(4):261-281. + + + + +Lei, C.H. and K.B. Armitage. 1980. Growth, development and body size of field and laboratory populations of Daphnia ambigua. Oikos 35(1):31-48. + + + + +deNoyelles, F. Jr. and W.D. Kettle. 1980. Herbicides in Kansas waters–evaluations of the effects of agricultural runoff and aquatic weed control on aquatic food chains. Contribution Number 219. Kansas Water Resources Research Institute, University of Kansas, Lawrence, KS, pp. 1-40. + + + + +Lei, C.H. and K.B. Armitage. 1980. Population dynamics and production of Daphnia ambigua in a fish pond, Kansas. University of Kansas Science Bulletin 51(25):687-715. + + + + +"," + + + +View of tanks, replicated ponds, and catchment ponds – Photo Credit Scott Campbell + + + + +View of Cross Reservoir – Photo Credit Kirsten Bosnak + + + + +View core field station facilities – Photo Credit Google Earth + + + + +View of inoculated mesocosms in the 3-season greenhouse (4-season greenhouse also exists) – Photo Credit Ted Harris + + + + +One set of the replicated ponds– Photo Credit Scott Campbell + + + + +Sampling large mesocosm tanks – Photo Credit Kirsten Bosnak + + + + +","['http://mesocosm.org/wp-content/uploads/2019/04/View-of-tanks-replicated-ponds-and-catchment-ponds-–-Photo-Credit-Scott-Campbell-300x199.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/View-of-Cross-Reservoir-–-Photo-Credit-Kirsten-Bosnak-300x199.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/View-core-field-station-facilities-–-Photo-Credit-Google-Earth-300x200.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/View-of-inoculated-mesocosms-in-the-3-season-greenhouse-4-season-greenhouse-also-exists-–-Photo-Credit-Ted-Harris-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/One-set-of-the-replicated-ponds–-Photo-Credit-Scott-Campbell-300x199.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/Sampling-large-mesocosm-tanks-–-Photo-Credit-Kirsten-Bosnak-300x199.jpeg']",['http://mesocosm.org/wp-content/uploads/2019/04/equipment-300x199.jpeg'],['http://mesocosm.org/wp-content/uploads/2019/04/lodging-300x199.jpeg'],,"['39.048918', '-95.191171']","{'coordinates': ['39.048918', '-95.191171']}" +https://mesocosm.org/mesocosm/life-infrastructure-ecp-facility-behavioural-ecology-of-fish-st-pee-lapitxuri/,"LIFE Infrastructure - ECP Facility (Behavioural Ecology of Fish, St Pée/Lapitxuri)",Infrastructure multi-site: RI LIFE,France,Europe,"RI LIFE INRA-AQUAPOLE +Agnes Bardonnet +64310 St-Pée-sur-Nivelle +France +  +IE ECP +UMR INRA-UPPA 1224 Ecobiop +INRA – Aquapôle, Ibarron +64310 St-Pée-sur-Nivelle +France +  +  +","Dr Agnès Bardonnet +Ing. Jean-Christophe Aymes +  +agnes.bardonnet@inra.fr +jean-christophe.aymes@inra.fr +","1982 - present (large flume, semi-natural stream); 2009 - present (tidal aquaria,, outdoor large basin)","St Pée facilities offer the opportunity to work with various sizes of artificial flowing-water mesocosms. +The Lapitxuri semi-natural stream (15 km from the INRA St Pée Institute) is fed by a diversion of a natural headwater stream. It is separated into 13 consecutive reaches (10m x 2.8m) allowing it to work with pseudo-replicates (each reach can be closed by downstream traps). T). Direct underwater observations can be performed on two reaches from an underground room. More classical mesocosms are available: 16 swedish tanks (2.5 m3), 8 circular tanks (0.1 m3), 6 indoor flumes (4.5 m long), 8 outdoor flumes (11m x 0.5m). +At the INRA St Pée Institute, a large 25 m3 circular flume (fluvarium) consists in 2 longitudinal sections (10 m x 1 m) separated by upstream and downstream traps. Water velocity (controlled by a propeller), light (twilight period possible), temperature (air+water), substratum and depth can be controlled. +Two smaller circular devices (tidal aquaria) consist of a 400 L aquarium where flow direction changes alternatively. They are located in two similar rooms, where air and water temperature, as well as light are controlled. It is used to investigate swimming behavior in tidal zone under different conditions or as replicates. +An outdoor large basin (756 m²) can be used under lentic (maximum depth: 4 m) or lotic (maximum depth: 80 cm) experimental situations. More classical mesocosms are available: 4 swedish tanks (2.5 m3), 2 series of 8 circular tanks (0. 16 or 0.5 m3), 1 series of 16 tanks (0.1 m3), 6 indoor flumes (1.50 m long). +"," +Discharge +water velocity +temperature +light +photoperiod +physical habitat and stream morphology +species compsition and individual characteristics + +","Evolution in Biodiversity under global change +Fish behavioral and physiological response to anthropogenic pressure (in particular for flow in context of climate change) +"," + + + + + + + 43.3561111, -1.5616666666666668; 43.2833333, -1.4822222222222223 + +","The LIFE Infrastructure is dedicated to the study of changes in freshwater ecosystems biodiversity with a primary interest in fish evolution and population dynamics. In this context, we also manipulate invertebrates, plants, mollusc, phyto and zooplankton. Major strengths of LIFE are its numerous facilities, the high expertise of its technical staff, and the possibility to perform experiments across a wide range of spatial and temporal scales. The main objective of  RI LIFE is to decipher the effects of multiple environmental forcings on individuals, populations or communities in order to inform management decisions for fish populations. +","Behavioral and evolutionary ecology of fish +In addition, the direct connection of PEARL and ECP, with ESE (https://www6.rennes.inra.fr/ese/) and ECOBIOP (https://ecobiop.com/) research teams ensures access to additional analytical platforms (environmental and analytical chemistry, trophic and molecular biology), as well as expertise of a broad scientific community. +"," +Variety of sampling tools for invertebrates and fish (emergence traps, nets, invertebrate or fish traps…) +electric fishing +PIT Tagging +mobile and fix antennas +habitat (flowmeters, series of sieves). +Sensors for continuous parameter recording (temperature, O2, conductivity, rainfall, PAR…) +Probes for temperature, pH, conductivity, dissolved O2, turbidity… +Equipment for sample measurements (weight scales, computer-connected optics…) +treatment (heat chamber, hood), and temporary stocking (fridges, -20°C and -80°C freezers) + +Energy laboratory (light-sensor respirometry chambers, Elemental analyser) + + +Organism behavior survey: Accelerometers, VIE tagging, Radio Tracking. + + +Strong expertise in using underwater and aerial Video. + + +","St Pée Inra Institute: Several hotels or guest houses are available in St Pée-sur-Nivelle town (located at 30 min from Biarritz Airport/Train station). +Lapitxuri: (20 min from St Pée) A container house equipped with two beds, a small kitchen and a toilet at the experimental site. +","https://www6.bordeaux-aquitaine.inra.fr/ie-ecp-ecobiop +Research website:  https://ecobiop.com/ +"," + + + +Aerial view St Pée, Foto credit: Skiba/INRA + + + + +Flume, Photo credit: Cheziere/UPPA + + + + +Aerial view Lapitxuri, Foto credit: DeChanzy-Laurent + + + + +Lapitxuri semi-natural stream, Foto credit: Glise/INRA + + + + +  +","['http://mesocosm.org/wp-content/uploads/2018/11/ECP_Aerial-view_St-Pée-1024x741.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Flume-1024x684.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Aerial-view_Lapitxuri.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Lapitxuri-semi-natural-stream.jpg']",,,,"['43.3561111', ' -1.5616666666666668']","{'coordinates': ['43.3561111', '-1.5616666666666668']}" +https://mesocosm.org/mesocosm/life-infrastructure-ecp-facility-behavioural-ecology-of-fish-st-pee-lapitxuri/,"LIFE Infrastructure - ECP Facility (Behavioural Ecology of Fish, St Pée/Lapitxuri)",Infrastructure multi-site: RI LIFE,France,Europe,"RI LIFE INRA-AQUAPOLE +Agnes Bardonnet +64310 St-Pée-sur-Nivelle +France +  +IE ECP +UMR INRA-UPPA 1224 Ecobiop +INRA – Aquapôle, Ibarron +64310 St-Pée-sur-Nivelle +France +  +  +","Dr Agnès Bardonnet +Ing. Jean-Christophe Aymes +  +agnes.bardonnet@inra.fr +jean-christophe.aymes@inra.fr +","1982 - present (large flume, semi-natural stream); 2009 - present (tidal aquaria,, outdoor large basin)","St Pée facilities offer the opportunity to work with various sizes of artificial flowing-water mesocosms. +The Lapitxuri semi-natural stream (15 km from the INRA St Pée Institute) is fed by a diversion of a natural headwater stream. It is separated into 13 consecutive reaches (10m x 2.8m) allowing it to work with pseudo-replicates (each reach can be closed by downstream traps). T). Direct underwater observations can be performed on two reaches from an underground room. More classical mesocosms are available: 16 swedish tanks (2.5 m3), 8 circular tanks (0.1 m3), 6 indoor flumes (4.5 m long), 8 outdoor flumes (11m x 0.5m). +At the INRA St Pée Institute, a large 25 m3 circular flume (fluvarium) consists in 2 longitudinal sections (10 m x 1 m) separated by upstream and downstream traps. Water velocity (controlled by a propeller), light (twilight period possible), temperature (air+water), substratum and depth can be controlled. +Two smaller circular devices (tidal aquaria) consist of a 400 L aquarium where flow direction changes alternatively. They are located in two similar rooms, where air and water temperature, as well as light are controlled. It is used to investigate swimming behavior in tidal zone under different conditions or as replicates. +An outdoor large basin (756 m²) can be used under lentic (maximum depth: 4 m) or lotic (maximum depth: 80 cm) experimental situations. More classical mesocosms are available: 4 swedish tanks (2.5 m3), 2 series of 8 circular tanks (0. 16 or 0.5 m3), 1 series of 16 tanks (0.1 m3), 6 indoor flumes (1.50 m long). +"," +Discharge +water velocity +temperature +light +photoperiod +physical habitat and stream morphology +species compsition and individual characteristics + +","Evolution in Biodiversity under global change +Fish behavioral and physiological response to anthropogenic pressure (in particular for flow in context of climate change) +"," + + + + + + + 43.3561111, -1.5616666666666668; 43.2833333, -1.4822222222222223 + +","The LIFE Infrastructure is dedicated to the study of changes in freshwater ecosystems biodiversity with a primary interest in fish evolution and population dynamics. In this context, we also manipulate invertebrates, plants, mollusc, phyto and zooplankton. Major strengths of LIFE are its numerous facilities, the high expertise of its technical staff, and the possibility to perform experiments across a wide range of spatial and temporal scales. The main objective of  RI LIFE is to decipher the effects of multiple environmental forcings on individuals, populations or communities in order to inform management decisions for fish populations. +","Behavioral and evolutionary ecology of fish +In addition, the direct connection of PEARL and ECP, with ESE (https://www6.rennes.inra.fr/ese/) and ECOBIOP (https://ecobiop.com/) research teams ensures access to additional analytical platforms (environmental and analytical chemistry, trophic and molecular biology), as well as expertise of a broad scientific community. +"," +Variety of sampling tools for invertebrates and fish (emergence traps, nets, invertebrate or fish traps…) +electric fishing +PIT Tagging +mobile and fix antennas +habitat (flowmeters, series of sieves). +Sensors for continuous parameter recording (temperature, O2, conductivity, rainfall, PAR…) +Probes for temperature, pH, conductivity, dissolved O2, turbidity… +Equipment for sample measurements (weight scales, computer-connected optics…) +treatment (heat chamber, hood), and temporary stocking (fridges, -20°C and -80°C freezers) + +Energy laboratory (light-sensor respirometry chambers, Elemental analyser) + + +Organism behavior survey: Accelerometers, VIE tagging, Radio Tracking. + + +Strong expertise in using underwater and aerial Video. + + +","St Pée Inra Institute: Several hotels or guest houses are available in St Pée-sur-Nivelle town (located at 30 min from Biarritz Airport/Train station). +Lapitxuri: (20 min from St Pée) A container house equipped with two beds, a small kitchen and a toilet at the experimental site. +","https://www6.bordeaux-aquitaine.inra.fr/ie-ecp-ecobiop +Research website:  https://ecobiop.com/ +"," + + + +Aerial view St Pée, Foto credit: Skiba/INRA + + + + +Flume, Photo credit: Cheziere/UPPA + + + + +Aerial view Lapitxuri, Foto credit: DeChanzy-Laurent + + + + +Lapitxuri semi-natural stream, Foto credit: Glise/INRA + + + + +  +","['http://mesocosm.org/wp-content/uploads/2018/11/ECP_Aerial-view_St-Pée-1024x741.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Flume-1024x684.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Aerial-view_Lapitxuri.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Lapitxuri-semi-natural-stream.jpg']",,,,"[' 43.2833333', ' -1.4822222222222223']","{'coordinates': ['43.2833333', '-1.4822222222222223']}" +https://mesocosm.org/mesocosm/heated-aquatic-mesocosms-for-climate-warming-experiment/,Heated Aquatic Mesocosms for Climate Warming Experiment,"Nanjing Institute of Geography and Limnology, Chinese Academy of Sciences",China,Asia,"73 East Beijing Road, Nanjing, China +","Dr. Hu He +Please login or request access to view contact information. +",Year 2016; conducted from 7 March to 3 July,"Mesocosms were operated at a subtropical temperature setting to compare the responses of zooplankton, phytoplankton and nutrients to warming in fish-present and fish-absent scenarios +"," +Temperature (ambient/+3°C) +Fish density (Without/with fish) + +","Fish-mediated plankton responses to increased temperature in subtropical aquatic mesocosm ecosystems +"," + + + + + 31.418517,120.218446 + +","Foodweb structure; zooplankton-phytoplankton interactions +","Restoration of subtropical and tropical shallow lakes +","400 L fiberglass-reinforced plastic tanks (90-cm high; 80- cm inside diameter at the top; 70-cm inside diameter at the base) +",,"https://doi.org/10.1016/j.watres.2018.07.055 +"," + + + +Location + + + + +Experiment setting, see publication: https://doi.org/10.1016/j.watres.2018.07.055 + + + + +Unheated mesocosms + + + + +Heated mesocosms + + + + +Water temperature trends + + + + +","['https://www.aquacosm.eu/wp-content/uploads/2019/03/location-300x170.png', 'https://www.aquacosm.eu/wp-content/uploads/2019/03/Experiment-setting-300x225.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Unheated-mesocosms-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Heated-mesocosms-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Water-temperature-trends-300x209.png']",,,,"['31.418517', '120.218446']","{'coordinates': ['31.418517', '120.218446']}" +https://mesocosm.org/mesocosm/tropical-aquatic-ecology-mesocosm/,Tropical Aquatic Ecology Mesocosm,State University of Goiás,Brazil,South America,"BR153, Nº3105, Anápolis, Goiás, Brazil. +","Dr. João Carlos Nabout +Please login or request access to view contact information. +",2019 to present,"The mesocosm of Tropical Aquatic Ecology consist of 80 independents tanks (500L each) mimicking small shallow lake, and able to control of water volume, individual filling and drainage. The mesocosm are situated near a shallow oligotrophic reservoir (the water can be used in mesocosm). +The mesocosm of Tropical Aquatic Ecology at State University of Goiás was constructed with financial support of National Institutes of Science and Technology (INCT) in Ecology, Evolution and Biodiversity Conservation (EECBIO), Brazilian National Council for Scientific and Technological Development (CNPq), Goiás State’s of Research Foundation (FAPEG), and scholarship from INCT EECBio, CNPq, CAPES and Brazilian Network on Global Climate Change Research (Rede CLIMA). +","Water volume, nutrients (TP and TN) +","Biomonitoring of algae bloom using taxonomic functional and molecular data; Metacommunity; Impact of global climate change (extreme events) on micobiote +"," + + + + + -16.37930,-48.94672 + +","Microbiote (phytoplankton, zooplankton, 16S rRNA and 18S rRNA) +","Ecology of tropical shallow lakes and limnology +","Microscopes, water sensors (e.g. pH, temperature, oxygen, turbidity, chlorophyll-a), nutrients analysis (partner laboratories). +",,," + + + + +Figure 1 Mesocosm of Tropical Aquatic Ecology – Phase of constructio (Photo credit: João Nabout) + + + + + + +Figure 2 Mesocosm of Tropical Aquatic Ecology – Phase of construction (Photo credit: João Nabout) + + + + + + +Figure 3 Mesocosm of Tropical Aquatic Ecology – Pilot of first studies (Photo credit: João Nabout) + + + + + +Figure 4 Mesocosm of Tropical Aquatic Ecology – Finalized (Photo credit: João Nabout) + + + + +","['http://mesocosm.org/wp-content/uploads/2019/03/Figure-1-Mesocosm-of-Tropical-Aquatic-Ecology-–-Phase-of-construction-300x225.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Figure-2-Mesocosm-of-Tropical-Aquatic-Ecology-–-Phase-of-construction-300x128.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Figure-3-Mesocosm-of-Tropical-Aquatic-Ecology-–-Pilot-of-first-studies-300x224.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Figure-4-Mesocosm-of-Tropical-Aquatic-Ecology-Finalized-300x127.jpeg']",,,,"['-16.37930', '-48.94672']","{'coordinates': ['-16.37930', '-48.94672']}" +https://mesocosm.org/mesocosm/life-infrastructure-pearl-facility-experimental-aquatic-platform-rennes-le-rheu/,"LIFE Infrastructure - PEARL facility (Experimental Aquatic Platform, Rennes/Le Rheu)",Infrastructure multi-site: RI LIFE,France,Europe,"RI LIFE INRA-AQUAPOLE +Agnes Bardonnet +64310 St-Pée-sur-Nivelle +France +  +U3E, INRA/AFB +65, rue de St Brieuc +35 042 Rennes cedex, +France +","Dr Eric Edeline, +Ing. Didier Azam +  +eric.edeline@inra.fr +didier.azam@inra.fr +",1987 - prensent (large earth ponds); 1997 - present (mesocosms platform and indoor microcosms),"Our platforms are engineered for versatility and adaptation to a large range of experimental designs. +The Rennes platform includes about 200 mesocosms (0.4 to 30 m3) and allows for a high replication of experimental treatments. We can reconstruct pond communities from invertebrates to fish to study their response to external forcing (natural or anthropogenic). Our mesocosms are also equipped for ecotoxicology experiments and manipulation of invasive species (we are accredited and master confinement and treatment procedures). +Additionally, a series of outdoor tanks are equipped for thermal experiments (up to 4°C above ambient temperature). +The mesocosm platform is complemented with an 800 m2 indoor microcosm (10-to-400 L) facility in which we can accurately manipulate environmental factors, and where we routinely culture a variety of organisms (algae, plants, plankton, invertebrates, amphibians, fish…). +  +Finally, at Le Rheu (5 km from Rennes) we further propose a series of large earth ponds of 100, 350, 500 or 1000 m3, which all may be  subdivided or installed with cages. +"," +Temperature (including via thermistors) +rain +light +photoperiod +nutrients +community structure (species and trophic composition) +gas (CO2, O2) + +","Population dynamics and community change in response to environment (in particular for contaminants in the context of global change) +"," + + + + + + + 48.1130833, -1.4822222222222223; 48.1202778, -1.7919444444444443 + +","The LIFE Infrastructure is dedicated to the study of changes in freshwater ecosystems biodiversity with a primary interest in fish evolution and population dynamics. In this context, we also manipulate invertebrates, plants, mollusc, phyto and zooplankton. Major strengths of LIFE are its numerous facilities, the high expertise of its technical staff, and the possibility to perform experiments across a wide range of spatial and temporal scales. The main objective of  RI LIFE is to decipher the effects of multiple environmental forcings on individuals, populations or communities in order to inform management decisions for fish populations. +","Population and community dynamics, Environment, Ecotoxicology +  +In addition, the direct connection of PEARL and ECP, with ESE (https://www6.rennes.inra.fr/ese/) and ECOBIOP (https://ecobiop.com/) research teams ensures access to additional analytical platforms (environmental and analytical chemistry, trophic and molecular biology), as well as expertise of a broad scientific community. +"," +Variety of sampling tools for invertebrates and fish (emergence traps, nets, invertebrate or fish traps…) +electric fishing +PIT Tagging +mobile and fix antennas +habitat (flowmeters, series of sieves). +Sensors for continuous parameter recording (temperature, O2, conductivity, rainfall, PAR…) +Probes for temperature, pH, conductivity, dissolved O2, turbidity… +Equipment for sample measurements (weight scales, computer-connected optics…) +treatment (heat chamber, hood), and temporary stocking (fridges, -20°C and -80°C freezers). +Sclerochronology laboratory (scales and otoliths). + +Laboratory spectrometers for most of dissolved elements + + +FlowCam 800 (organisms up to 600 µm) and FlowCam Macro (up to 5mm) + + +PhytoPam for measurement of active chlorophyll concentration and algal productivity. + + +Autoclave + + +Water samplers.Strong expertise in using electric fishing, acoustic cameras and acoustic tracking. + + +","Rennes mesocosm platform is located at AgroCampusOuest within the city of Rennes, a university city located 1.5 hours by train from Paris (Airport and train station in Rennes). On the campus, visitors have access to individual apartments, and many hotels are available in the vicinity of the campus. +","https://www6.rennes.inra.fr/u3e/DISPOSITIFS-EXPERTISES/Plateforme-PEARL +"," + + + +Aerial view Rennes experimental complex; Foto credit: Caquet/INRA +  + + + + +Series of 30 mesocosms, Foto credit: Beaumont/INRA + + + + +Aerial view ponds station, Foto credit: Geoportrail/IGN + + + + +Series of mesocosms 30 m3 and 9 m3, Foto credit: Beaumont/INRA + + + + +  +","['http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Aerial_view_Rennes_experimental_complex.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Serie_of_30_mesocoms_3-m3-1024x678.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Aerial_view-Ponds-Station_PF-Etangs-1024x594.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Mesocosms_Series_30m3_and_9-m3-1024x678.jpg']",,,,"['48.1130833', ' -1.4822222222222223']","{'coordinates': ['48.1130833', '-1.4822222222222223']}" +https://mesocosm.org/mesocosm/life-infrastructure-pearl-facility-experimental-aquatic-platform-rennes-le-rheu/,"LIFE Infrastructure - PEARL facility (Experimental Aquatic Platform, Rennes/Le Rheu)",Infrastructure multi-site: RI LIFE,France,Europe,"RI LIFE INRA-AQUAPOLE +Agnes Bardonnet +64310 St-Pée-sur-Nivelle +France +  +U3E, INRA/AFB +65, rue de St Brieuc +35 042 Rennes cedex, +France +","Dr Eric Edeline, +Ing. Didier Azam +  +eric.edeline@inra.fr +didier.azam@inra.fr +",1987 - prensent (large earth ponds); 1997 - present (mesocosms platform and indoor microcosms),"Our platforms are engineered for versatility and adaptation to a large range of experimental designs. +The Rennes platform includes about 200 mesocosms (0.4 to 30 m3) and allows for a high replication of experimental treatments. We can reconstruct pond communities from invertebrates to fish to study their response to external forcing (natural or anthropogenic). Our mesocosms are also equipped for ecotoxicology experiments and manipulation of invasive species (we are accredited and master confinement and treatment procedures). +Additionally, a series of outdoor tanks are equipped for thermal experiments (up to 4°C above ambient temperature). +The mesocosm platform is complemented with an 800 m2 indoor microcosm (10-to-400 L) facility in which we can accurately manipulate environmental factors, and where we routinely culture a variety of organisms (algae, plants, plankton, invertebrates, amphibians, fish…). +  +Finally, at Le Rheu (5 km from Rennes) we further propose a series of large earth ponds of 100, 350, 500 or 1000 m3, which all may be  subdivided or installed with cages. +"," +Temperature (including via thermistors) +rain +light +photoperiod +nutrients +community structure (species and trophic composition) +gas (CO2, O2) + +","Population dynamics and community change in response to environment (in particular for contaminants in the context of global change) +"," + + + + + + + 48.1130833, -1.4822222222222223; 48.1202778, -1.7919444444444443 + +","The LIFE Infrastructure is dedicated to the study of changes in freshwater ecosystems biodiversity with a primary interest in fish evolution and population dynamics. In this context, we also manipulate invertebrates, plants, mollusc, phyto and zooplankton. Major strengths of LIFE are its numerous facilities, the high expertise of its technical staff, and the possibility to perform experiments across a wide range of spatial and temporal scales. The main objective of  RI LIFE is to decipher the effects of multiple environmental forcings on individuals, populations or communities in order to inform management decisions for fish populations. +","Population and community dynamics, Environment, Ecotoxicology +  +In addition, the direct connection of PEARL and ECP, with ESE (https://www6.rennes.inra.fr/ese/) and ECOBIOP (https://ecobiop.com/) research teams ensures access to additional analytical platforms (environmental and analytical chemistry, trophic and molecular biology), as well as expertise of a broad scientific community. +"," +Variety of sampling tools for invertebrates and fish (emergence traps, nets, invertebrate or fish traps…) +electric fishing +PIT Tagging +mobile and fix antennas +habitat (flowmeters, series of sieves). +Sensors for continuous parameter recording (temperature, O2, conductivity, rainfall, PAR…) +Probes for temperature, pH, conductivity, dissolved O2, turbidity… +Equipment for sample measurements (weight scales, computer-connected optics…) +treatment (heat chamber, hood), and temporary stocking (fridges, -20°C and -80°C freezers). +Sclerochronology laboratory (scales and otoliths). + +Laboratory spectrometers for most of dissolved elements + + +FlowCam 800 (organisms up to 600 µm) and FlowCam Macro (up to 5mm) + + +PhytoPam for measurement of active chlorophyll concentration and algal productivity. + + +Autoclave + + +Water samplers.Strong expertise in using electric fishing, acoustic cameras and acoustic tracking. + + +","Rennes mesocosm platform is located at AgroCampusOuest within the city of Rennes, a university city located 1.5 hours by train from Paris (Airport and train station in Rennes). On the campus, visitors have access to individual apartments, and many hotels are available in the vicinity of the campus. +","https://www6.rennes.inra.fr/u3e/DISPOSITIFS-EXPERTISES/Plateforme-PEARL +"," + + + +Aerial view Rennes experimental complex; Foto credit: Caquet/INRA +  + + + + +Series of 30 mesocosms, Foto credit: Beaumont/INRA + + + + +Aerial view ponds station, Foto credit: Geoportrail/IGN + + + + +Series of mesocosms 30 m3 and 9 m3, Foto credit: Beaumont/INRA + + + + +  +","['http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Aerial_view_Rennes_experimental_complex.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Serie_of_30_mesocoms_3-m3-1024x678.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Aerial_view-Ponds-Station_PF-Etangs-1024x594.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Mesocosms_Series_30m3_and_9-m3-1024x678.jpg']",,,,"[' 48.1202778', ' -1.7919444444444443']","{'coordinates': ['48.1202778', '-1.7919444444444443']}" +https://mesocosm.org/mesocosm/kosmos-kiel-off-shore-mesocosms-for-ocean-simulations/,KOSMOS (Kiel Off-Shore Mesocosms for Ocean Simulations),GEOMAR-Helmholtz Center for Ocean Research Kiel,Germany,Europe,"GEOMAR-Helmholtz Center for Ocean Research + West shore campus + Düsternbrooker Weg 20 + D-24105 Kiel + East shore campus + Wischhofstr. 1-3 + D-24148 Kiel +","Professor Ulf Riebesell (KOSMOS) +Please login or request access to view contact information. +",,"off-shore/outdoor/indoor – pelagic/benthic – marine/brackish + Kiel-KOSMOS + outdoor mobile – pelagic – marine/brackish + 9 floatting structures of 50 m3 (emerging part : 2.5 m high, 2.8 m Ø. submerged part : 17 m high, 2 m Ø) +","KOSMOS: CO2, nutrients +","KOSMOS: phytoplankton, zooplankton, chemistry, biogeochemistry, ecology +"," + + + + + 54.330034,10.1482026 + +",,,"KOSMOS: mobile meoscosm structure can be installed on any study site, transportation with RVs and/or in standard 20 and 40-foot containers. +",,"http://www.geomar.de/en/ + Media report: Window on future ocean +"," + + + +KOSMOS mesocosms deployed in Raunefjord off Bergen, Norway in 2011 + + + + +  +KOSMOS deployment with the Spanish research vessel „Hesprides“ off Gran Canaria in 2014 + + + + +Sampling of the KOSMOS mesocosms during an experiment on the effects of ocean acidification off Gran Canaria in 2014 + + + + +","['http://mesocosm.org/wp-content/uploads/2017/02/KOSMOS-Raunefjord_2011-300x142.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/KOSMOS-deployment-with-the-Spanish-research-vessel-„Hesprides“-off-Gran-Canaria-in-2014-300x225.png', 'http://mesocosm.org/wp-content/uploads/2017/03/Sampling-of-the-KOSMOS-mesocosms-during-an-experiment-on-the-effects-of-ocean-acidification-off-Gran-Canaria-in-2014-300x225.png']",,,,"['54.330034', '10.1482026']","{'coordinates': ['54.330034', '10.1482026']}" +https://mesocosm.org/mesocosm/maximus/,MAXIMUS,Roskilde University,Denmark,Europe,"Roskilde University + Universitetsvej 1 + P.O. Box 260 + 4000 Roskilde +","Benni Winding Hansen +Please login or request access to view contact information. +",,"outdoor – pelagic – marine + land based tanks +",,"fish fry production, turbot larve, ecosystem studies +"," + + + + + 55.6519602,12.137471 + +",,,,,"http://rucforsk.ruc.dk/site/person/bhansen +Impaq project: Turbot tracked in a tanknutrients, +",,,,,,"['55.6519602', '12.137471']","{'coordinates': ['55.6519602', '12.137471']}" +https://mesocosm.org/mesocosm/innotech-alberta-aquatic-mesocosm-facility/,InnoTech Alberta Aquatic Mesocosm Facility,InnoTech Alberta,Canada,North America,"PO Bag 4000 +Hwy 16A & 75 Street +Vegreville, Alberta, Canada, T9C 1T4 +","Brian Eaton, Manager, Environmental Impacts +Please login or request access to view contact information. +  +Jim Davies, Researcher, Environmental Impacts +Please login or request access to view contact information. +",2017 - present,"1) AQUATIC MESOCOSMS +Our facility includes 30 outdoor polyethylene in-ground mesocosms (14 m3 operating volume each) nested within larger containment tanks.  +Each mesocosm is approximately 1.5 m deep and 3.6 m in diameter.  Overflow protection is provided by drainage into below-ground holding tanks.  The mesocosms are allowed to freeze each winter, resulting in ~ 0.5 m of liquid water maintained under ~ 1.0 m of snow and ice.  The water layer allows a range of taxa to persist across consecutive years, enabling multi-year studies. +A network of gravel roads allows large vehicles to access the mesocosms.  Wooden walkways and vertical posts support the staging and deployment of instrumentation, sampling materials, and other gear. +Evaporative losses are offset by potable water stored in a pair of large (25 m3) above-ground tanks and distributed to each mesocosm via a network of polyvinyl chloride (PVC) hoses. +Wastewater storage is provided by a series of above-ground tanks housed within a geomembrane-lined berm.  These tanks allow the storage of up to 125 m3 of wastewater from spring to early fall. +Emergent and submerged plants are propagated in shallow and deep artificial ponds respectively.  Biologically active water can be obtained via pipeline from a nearby pond or trucked in from an alternate source. +  +2) AQUATIC /TERRESTRIAL MESOCOSMS +InnoTech’s Above Ground Mesocosm Facility was constructed in collaboration with the Helmholtz-Alberta Initiative through the University of Alberta.  The facility consists of a geomembrane-lined and bermed containment pad (12 m x 28 m).  Currently, the facility includes 16 above ground mesocosms (5 m3, 1.32 m tall, 2.2 m diameter) capable of housing short to medium-term terrestrial or aquatic experiments, as well as 32 smaller (0.37 m3, 1.28 m tall, 0.6 m diameter) tanks that can be used for smaller-scale studies, or in conjunction with the larger tanks (see below).  +The mesocosms can be adapted for many different experimental conditions or to measure a range of parameters.  For example, past studies have included the forced aeration of the water column as a treatment condition, deployment of automated CO2 flux chambers on floating rafts, and the installation of a range of data loggers. +When empty, the tanks can be tipped on their side and rolled from place to place by a single person.  This allows the easy rearrangement of tanks to suit the needs of each study, and additional tanks can be added, depending on spacing and size of each tank. +The mesocosms are housed inside a geomembrane-lined containment berm which slopes towards a catchment basin.  In the event of a leak, materials will flow downhill to the catchment basin where they can be analyzed, then collected and disposed of appropriately. +A total of nine 2-inch access ports are installed at the top, middle, and bottom of each mesocosm tank (3 at each level).  These ports allow the installation of sensors and/or hoses.  If the mesocosms contain soil, hoses can be connected to corresponding ports on a pair of smaller (0.37 m3) tanks.  Hydraulic head will alter water level in the mesocosm by adding or removing water from these smaller tanks.  Alternatively, multiple mesocosms can be connected by hoses, allowing water to flow from one mesocosm to another.  Such a feature facilitates water homogenization across the entire array, or may be useful in studying multi-stage water treatment wetlands. +The facility is accessible to large vehicles including trucks and heavy equipment.  Biologically active water can be obtained via pipeline from a nearby pond or trucked in from an alternate source. +  +  +Support services.  Scientific and logistical support services (e.g., analytical chemistry, molecular biology, plant sciences, heavy equipment, and fabrication services) are available within 200 m of the facility. +  +"," +Source water or soil +Water level +Soil profile +Sediment +Installed macrophyte community +Uniform environmental conditions + +"," +Ecological effects of impacted materials, +aquatic plant biology, +seasonal effects, +environmental genomics + +  + +Environmental genomics, +microbial degradation of impacted materials +herbicide degradation/remediation +vegetation and soil community response to different soil amendments +modelling impacts of climate change on soil communities and/or vegetation + +"," + + + + + 53.506641,-112.093612 + +"," +Mitigation of industrial impacts +Ecotoxicology +Invasive species control +De-risking technologies +Validation of control methods +Biocide testing + +"," +Aquatic ecology, +environmental genomics, +ecotoxicology, +industrial impact studies + +"," +30x nested mesocosms, each ~ 14 m3 +1x shallow supply pond (propagation of emergent plants for experiments) +4x deep supply pond (propagation of submerged plants for experiments) +2x potable water tanks, each ~ 25 m3 +Potable water distribution system +5x wastewater tanks in berm, each ~ 25 m3 +Collection of other tanks between 5 m3 and 25 m3 available for use +Road network +Solar-powered dewatering system +Irrigation pipeline to obtain biologically active surface water +Water handling equipment (pumps, hoses, carts) + +  + +16x above-ground mesocosms, each ~ 5 m3, in bermed containment field with dedicated capture basin +32x smaller tanks, each ~ 0.37 m3, for regulation of mesocosm water level via hydraulic head, or for use in smaller-scale mesocosm studies +Irrigation pipeline to obtain nearby surface water + +  + +Nearby service laboratories and support services +Laboratory and office space available +On-site security + +","Food and accommodation available in Vegreville, approximately 2 km away +","Mesocosm Test Facilities – InnoTech Alberta +","InnoTech Alberta Aquatic Mesocosms, photo credit: InnoTech Alberta +A water layer is maintained at the bottom of the mesocosms during winter, photo credits: InnoTech Alberta +InnoTech Alberta Aquatic Mesocosm Facility, photo credit: InnoTech Alberta +Elevated view of mesocosm facility with 2 smaller tanks nested within each of the main mesocosm tanks on the bermed containment pad. Photo Credit: InnoTech Alberta +Mescocosms being used for an aquatic experiment. Note the floating automated CO2 flux chambers in the tanks in the foreground. Photo Credit: InnoTech Alberta +","['http://mesocosm.org/wp-content/uploads/2023/08/sunset-innotech-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/08/sinter-innotech.jpg', 'http://mesocosm.org/wp-content/uploads/2023/08/birdview-InnoTech-1024x469.jpg', 'http://mesocosm.org/wp-content/uploads/2023/08/birdeye.jpg', 'http://mesocosm.org/wp-content/uploads/2023/08/ter2.jpg']",,,,"['53.506641', '-112.093612']","{'coordinates': ['53.506641', '-112.093612']}" +https://mesocosm.org/mesocosm/lmu-mesocosms/,LMU Mesocosms,Ludwig-Maximilians-Universität,Germany,Europe,"Ludwig-Maximilians-Universität München + Department Biologie II + Aquatic Ecology + Großhaderner Str. 2 + 82152 Planegg-Martinsried +","Prof. Herwig Stibor + Dr. Maria Stockenreiter +Please login or request access to view contact information.,Please login or request access to view contact information. +",2005 - present,"outdoor – pelagic/benthic – freshwater + 8 concrete tanks, 3 temperature controlled basins, 10 smaller concrete tanks +","temperature, light, nutrients, species composition +","plankton ecology, climate change scenarios, nutrients, stoichiomenty, biodiversity and community assembly +"," + + + + + 48.109151,11.45844 + +",,,"Casy Counter, Fluorometer, nutrient analyses, scopes, several labs for small scale experiments, multispectral PAM, 8-LED-based Algal Lab Analyzer, spectroradiometer, climate chamber. +",,"http://www.aquatic-ecology.bio.lmu.de/contact/index.html +"," + + + +Munich Mesocosm facility on Campus, Photo: Dr. Stella Berger + + + + +Munich Mesocosm facility on Campus, Photo: Dr. Stella Berger + + + + +","['http://mesocosm.org/wp-content/uploads/2017/02/Munih_mesocosms2-300x188.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Munich_mesocosms1-300x225.jpg']",,,,"['48.109151', '11.45844']","{'coordinates': ['48.109151', '11.45844']}" +https://mesocosm.org/mesocosm/crimac-calabria-marine-centre/,Crimac – Calabria Marine Centre,Stazione Zoologica Anton Dohrn,Italy,Europe,"Contrada Torre Spaccata, +Località Torre Spaccata, +87071 Amendolara (CS), +Italy +","Teresa Romeo +Please login or request access to view contact information., +  +",2024 - present,"The mesocosms are located within a thermostatic laboratory and consist of 20 aquariums, each with a capacity of approximately 40 litres (30x47x28 cm), featuring transparent methacrylate fronts. These aquariums are organised into two “twin” systems, with each system comprising 10 tanks arranged in two rows (5 tanks per row). Additionally, there are two independent systems dedicated to the maintenance of marine organisms, used for both acclimatisation and quarantine purposes. +"," +Temperature +pH +Salinity +Lights intensity + +"," +Marine Biology +Ecology +Biotechnology + +"," + + + + + 39.9588889;16.62666666666667 + +","Anthropogenic impacts on marine ecosystems +","Climate change and microplastic contamination +"," +20 Temperature controllers +20 pH controllers +20 Heater (100 W) +20 Cooler (200 W) +1 Cooler (1000 W) +Multiparameter probe (temperature, redox, pH, conductivity, dissolved oxygen) +Led lamps +Osmoregulation System +Data loggers (temp, light, pH, conductivity, dissolved oxygen) +Ph-meter +Spectrophotometer +Spectrofluorimeter +Marine Salinity Tester + +","There is no accommodation available on-site at the headquarters, but there are options for staying in nearby guest houses, hotels, and B&Bs. +","https://crimacszn.com/ +https://www.szn.it/index.php/it/chi-siamo/le-nostre-sedi/sedi-territoriali-di-tipo-a/calabria-marine-centre-crimac +","Amendolara Seat – outdoor facility, photo credits: +Detail of Rack, photo credits: +Filtration System, photo credit: +","['http://mesocosm.org/wp-content/uploads/2025/06/Photo-1.2-Amendolara-seat-outdoor-facility-Kopie-1024x714.jpg', 'http://mesocosm.org/wp-content/uploads/2025/06/Photo-3-Detail-of-Rack-2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2025/06/Photo-2.2-Filtration-System-Kopie-1024x768.jpg']",,,,['39.9588889'],{'coordinates': nan} +https://mesocosm.org/mesocosm/crimac-calabria-marine-centre/,Crimac – Calabria Marine Centre,Stazione Zoologica Anton Dohrn,Italy,Europe,"Contrada Torre Spaccata, +Località Torre Spaccata, +87071 Amendolara (CS), +Italy +","Teresa Romeo +Please login or request access to view contact information., +  +",2024 - present,"The mesocosms are located within a thermostatic laboratory and consist of 20 aquariums, each with a capacity of approximately 40 litres (30x47x28 cm), featuring transparent methacrylate fronts. These aquariums are organised into two “twin” systems, with each system comprising 10 tanks arranged in two rows (5 tanks per row). Additionally, there are two independent systems dedicated to the maintenance of marine organisms, used for both acclimatisation and quarantine purposes. +"," +Temperature +pH +Salinity +Lights intensity + +"," +Marine Biology +Ecology +Biotechnology + +"," + + + + + 39.9588889;16.62666666666667 + +","Anthropogenic impacts on marine ecosystems +","Climate change and microplastic contamination +"," +20 Temperature controllers +20 pH controllers +20 Heater (100 W) +20 Cooler (200 W) +1 Cooler (1000 W) +Multiparameter probe (temperature, redox, pH, conductivity, dissolved oxygen) +Led lamps +Osmoregulation System +Data loggers (temp, light, pH, conductivity, dissolved oxygen) +Ph-meter +Spectrophotometer +Spectrofluorimeter +Marine Salinity Tester + +","There is no accommodation available on-site at the headquarters, but there are options for staying in nearby guest houses, hotels, and B&Bs. +","https://crimacszn.com/ +https://www.szn.it/index.php/it/chi-siamo/le-nostre-sedi/sedi-territoriali-di-tipo-a/calabria-marine-centre-crimac +","Amendolara Seat – outdoor facility, photo credits: +Detail of Rack, photo credits: +Filtration System, photo credit: +","['http://mesocosm.org/wp-content/uploads/2025/06/Photo-1.2-Amendolara-seat-outdoor-facility-Kopie-1024x714.jpg', 'http://mesocosm.org/wp-content/uploads/2025/06/Photo-3-Detail-of-Rack-2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2025/06/Photo-2.2-Filtration-System-Kopie-1024x768.jpg']",,,,['16.62666666666667'],{'coordinates': nan} +https://mesocosm.org/mesocosm/ceh-aquatic-mesocosm-facility-camf/,CEH Aquatic Mesocosm Facility (CAMF),Centre for Ecology & Hydrology (CEH),United Kingdom,Europe,"Centre for Ecology & Hydrology (CEH) +Lancaster University +Library Avenue +Lancaster +LA1 4AP +UK +","Dr Heidrun Feuchtmayr +Please login or request access to view contact information. +",2011 - present,"Outdoor – pelagic/benthic – freshwater +32 cylindrical insulated fibreglass outdoor mesocosms, each 1.0 m deep and 2.0 m in diameter (3000 L) arranged in four rows with eight mesocosms in each and 3 fibreglass tanks 1.0 m deep and 4.0 m in diameter (12000 L). The site was built in 2011 and is located around 2 miles from the CEH office. +","Depending on each individual experiment. So far: + +temperature +nutrients +precipitation (flushing) +organic carbon + +","The site has been used for various climate change experiments so far, focussing on the effect of + +brownification on freshwater communities +multiple stressors + +warming +eutrophication +extreme rainfall events. + + + +"," + + + + + 54.014373, -2.777004 + +",,,"Electric heating elements are placed in each mesocosm to allow for climate warming experiments. Water temperature in warmed mesocosms can be increased by up to 5 degrees C above the ambient water temperatures, controlled by a custom computer program. To prevent thermal stratification, purpose-built mixers suspended in the middle of the mesocosm, can be moved slowly up and down through the water column. The mixers are controlled by data loggers and can be operated on different mixing regimes. All mesocosms are equipped with automatic sensors measuring temperature, dissolved oxygen and photosynthetically active radiation (PAR) every 5 minutes. A weather station within the mesocosm compound measures wind speed, wind direction, precipitation, air temperature, barometric pressure and relative humidity, logged at five minute intervals. All data is logged by a data logger and directly transferred to a server. +","Lancaster University B&B +","https://www.ceh.ac.uk/our-science/research-facility/aquatic-mesocosm-facility +"," + + + +Photo credits: Heidrun Feuchtmayr + + + + +Photo credits: Heidrun Feuchtmayr + + + + +Figure credits: Heidrun Feuchtmayr + + + + +","['http://mesocosm.org/wp-content/uploads/2019/07/IMG_5163-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2019/07/IMG_5156-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2019/07/CAMF-schematic.jpg']",,,,"['54.014373', ' -2.777004']","{'coordinates': ['54.014373', '-2.777004']}" +https://mesocosm.org/mesocosm/experimental-mesocosm-facility-at-friday-harbor-labs-fhl/,Experimental Mesocosm Facility at Friday Harbor Labs (FHL),University of Washington,USA,North-America,"University of Washington + School of Oceanography + 1503 NE Boat Street + Seattle, WA  98105 + USA +","Prof. James Murray + Please login or request access to view contact information. +",2011-present,"outdoor/indoor – pelagic – marine + Outdoor in-water Mesocosms – FHL Dock: + This facility includes a floating dock with attachments for nine 2000 L plastic bags (~1 m diameter, 3 m depth). Within these bags, chemistry can be manipulated with the addition of CO2-saturated water as well as nutrients, etc. + Indoor Mesocosms-Lab 12: + The lab is supplied with conditioned water from a custom filtration and CO2 stripping system supplied by the FHL seawater source. Manipulative experiments are conducted in custom designed mixing reservoirs (white Igloo coolers). Each mixing reservoir has a recirculating pump and venturi injector which constantly aerates the water with CO2-free air. The water is circulated through a chilling loop as well. Water chemistry is monitored by a Honeywell Durafet pH electrode in each reservoir connected to Honeywell UDA2182 process controller. This controller adds CO2 to the stream of CO2-free air to achieve the desired pH setpoint (range from ~8.2 to below 7.0) and a separate temperature controller activates a submersed heater to achieve the desired temperatures (range from ~8°C to 25°C) +","independently controlled pH, CO2, temperature conditions, and nutrients +","CO2 increase, ocean acidification, global warming, eutrophication +"," + + + + + 48.5466503,-123.0127619 + +",,," + + +The teaching and research laboratories consist of eight one-story buildings of about 1,500 square feet each and three larger two-story research buildings. Running sea water, free from metallic contamination, is delivered to plexiglass aquaria and water tables through polyethylene or PVC pipes and fittings. Walk-in cold rooms, a microtechnique room, and a shop are available. Analytical equipment for general use includes centrifuges, computers, scintillation counter, particle counter, a high performance liquid chromatograph, nucleotide sequencer, PCR thermocyclers and other equipment for molecular biology, spectrophotometers, culture chambers, fluorescence microscope, video equipment, scanning laser confocal microscope, and electrophysiological equipment. A scanning electron microscope and transmission electron microscope may be used by investigators who have or can obtain appropriate training. + + + +","Kitchen units: The following shared housekeeping facilities on campus are available for rent to visiting researchers, faculty and graduate students pursuing independent study or working as a research/teaching assistant: twelve apartments with studio, one-, two- and three-bedroom units, twelve cottages, eight duplex units, and sixteen rooms in FHL’s graduate housing facility. All units include basic furniture and are equipped with dishes, silverware, and pots and pans. Space is assigned as available. Course instructors have high priority in the assignment of housekeeping units. + Non-Kitchen Units: Dormitories and huts are non-housekeeping units. Central washroom and toilet facilities are available to the occupants. Spring, Summer and Autumn Quarter occupants of these units must subscribe to a full meal plan at the Dining Hall. Dormitory rooms are mostly double occupancy with a few single occupancy. Beds, dressers and desks are provided. Fifteen wooden huts accommodate one or two persons each. All are provided with electric light and heat, double bed, dresser and desk. Space is assigned as available. + Miscellaneous: Laundry facilities include metered washers, dryers, irons and ironing boards. Visitors are encouraged to provide their own linen and bedding. Bed kits can be rented by those unable to bring their own. There are a few cribs and high chairs available for family living quarters. Advance notice is required for bedding, cribs and high chairs. + Because the laboratory grounds are a biological preserve, cats and dogs are not allowed. Those who wish to bring pets must seek housing off-campus or board their pets at local kennels. + Bicycles are a practical means of travel to town and around campus. As a result of a generous gift from an FHL friend, there are several bicycles available that may be checked out for periods of a few days or weeks, on the condition they are returned in good order. +","http://depts.washington.edu/fhl/oael.html +"," + + + + +Outdoor in-water Mesocosms – FHL Dock +  +The large in-water mesocosms are ideal for monitoring short term responses of natural plankton communities to seawater perturbations. + + + + + + + + + +Indoor Mesocosms-Lab 12 +The lab is supplied with conditioned water from a custom filtration and CO2 stripping system supplied by the FHL seawater source. This produces water that has been filtered (0.2 µm), UV sterilized and stripped of CO2, to generally less than 300 µatm. + + + + + + + + + +","['http://mesocosm.org/wp-content/uploads/2017/05/outdoor-oalab4-300x129.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/indoor-oalab3.jpg']",,,,"['48.5466503', '-123.0127619']","{'coordinates': ['48.5466503', '-123.0127619']}" +https://mesocosm.org/mesocosm/mekjarvik-research-station/,Mekjarvik Research Station,International Research Institute of Stavanger (IRIS),Norway,Europe,"IRIS +P. O. Box 8046, 4068 Stavanger, (mailing address) +Prof. Olav Hanssensvei 15, 4021 Stavanger (visiting address) +Telephone: (+47) 51 87 50 00 +Fax: (+47) 51 87 52 00 +E-mail: firmapost@iris.no +","Dr. Thorleifur Agustsson: +Please login or request access to view contact information.Thorleifur.Agustsson@iris.noPlease login or request access to view contact information. +",1995-present,"Pelagic/Benthic and Marine/Freshwater +  +Facilities have been tailored for conducting studies targeting a range of marine conditions from temperate to Arctic and surface waters to deep sea. The centre includes 620 m2 of laboratories, all with access to a continuous supply of filtered seawater pumped from 80 m depth from the fjord adjacent to the laboratory. Recently fitted sophisticated heat exchange systems supply multiple seawater temperatures to support several independent experiments simultaneously or for use within single experiments facilitating multi-stressor studies. +  +Experimental facility divided into 2 parts (see pictures): + +Pilot hall for large scale experiments that include pelagic enclosures of different sizes to conduct exposure studies with organisms varying from zooplankton larvae to adult fish. Additionally, benthic chambers of different sizes, each equipped with lids holding a stirrer, optodes, special injector and sampling ports are available for use in either the pilot hall or climate rooms. +6 climate rooms are available for more specific incubations requiring strict regulation of both air and water temperature. Climate rooms all with control of light and temperature (-1 to +40 °C). + +  +","Continuous supply of fresh seawater taken from the adjacent fjord below the thermocline (80 m water depth) passing through double sand filters The parameters that can be controlled (single or multiple) include: + +Finer filtering of incoming water (filters of different size). +Multiple water temperature within a single experiment +Multiple monitored range in water oxygenation within a single experiment. +Multiple monitored range in water pH within a single experiment. + +Multiple monitored concentration of crude oil additions (dissolved or oil droplets) in water within a single experiment. +","At IRIS Mekjarvik Research Station, there is a strong focus on high quality laboratory exposure/manipulation experiments (pelagic and benthic mesocosm setups) aimed at understanding the impact of predicted climate change and anthropogenic activity on key pelagic and benthic players and processes in the marine and freshwater ecosystem. Research funding from the Industry, Research council of Norway and the EU.  Recently addressed research topics include: +– Impact of crude oil on Cod and Salmon (Research council of Norway with National & International partners) +– On the sensitivity of Krill to oil exposure (Research council of Norway with National & International partners) +– Multi-Stressor (ocean acidification & temperature) experiment with Shrimp (Research council of Norway with National & International partners) +– Impact of mine tailings on seafloor structure and functioning (EU & Research council of Norway, with National & International partners) + – Impact of Crude oil on pelagic microbial biodiversity (Research council of Norway with National & International partners) +– Impact of drill-cuttings on Corals & Sponges (Research council of Norway with National & International partners) +– CCS: Impact of CO2 seepage behavioral traits in benthic invertebrates (Research council of Norway with National & International partners) +"," + + + + + 59.0206314, 5.6159267000000455 + +",,,"The laboratory facilities of IRIS Mekjarvik Research Station provide a modern infrastructure for biological testing and analyses. Our laboratory facilities include: +Ecotoxicology, Histology, Chemistry, Proteomics, Microbiology, Molecular Biology and Microscopy/Image Analysis. +Collection of pelagic or benthic components: rental of boat with high quality sampling devices.  +","No in-house lodging. Hotel rooms and rental of houses or apartments are available in the vicinity. +","http://www.iris.no/research/environment +"," + + + +Photo: Leon Moodley + + + + +Photo. Leon Moodley + + + + +Photo: Leon Moodley + + + + +  +","['http://mesocosm.org/wp-content/uploads/2018/04/Stavanger-1-300x279.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/Stavanger-2-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/Stavanger-3-300x200.jpg']",,,,"['59.0206314', ' 5.6159267000000455']","{'coordinates': ['59.0206314', '5.6159267000000455']}" +https://mesocosm.org/mesocosm/mesocosms-at-the-upper-parana-river-nupelia-field-station/,Mesocosms at the Upper Paraná River (Nupélia Field Station),Universidade Estadual de Maringá – UEM,Brazil,South America,"Av. Colombo 5790, Maringá, PR, Brazil, 87020-900 +","Roger Paulo Mormul +Please login or request access to view contact information. +",Predicted to be ready in 2020,"The mesocosms are located in the shore of the Upper River Paraná in Brazil. They are installed in a field station with boats, lodges for ca. 20 persons, kitchen all other facilities (e.g., aquaria, laboratories to work the samples etc.). +","Previous experiments using these facilities have controlled the presence of invasive species, habitat complexity, water chemistry and water level among others, but it is not possible to control temperature in the mesocosms. +","Effects of invasive species on native communities, mechanisms that make ecosystems to resist to invasions, top-down and bottom up mechanisms in freshwater food webs, among others. +"," + + + + + -22.765525,-53.2572166 + +","Ecology of invasive species, food webs. +","Ecology and systematic of phytoplankton, zooplankton, macrophytes, invertebrates and fish. +","Equipment to measure basic water parameters (pH, turbidity, oxygen and temperature). Possibility to measure water nutrients. +","Lodge for 20 persons + four individual chalet enough for two persons each. +","www.nupelia.uem.br +"," + + + + + + + + + +","['http://mesocosm.org/wp-content/uploads/2019/03/Mesocosmos-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Fieldstation-300x224.png']",,,,"['-22.765525', '-53.2572166']","{'coordinates': ['-22.765525', '-53.2572166']}" +https://mesocosm.org/mesocosm/sites-aquanet-asa-research-station/,SITES AquaNet – Asa Research Station,SITES and Swedish University of Agricultural Sciences,Sweden,Europe,"Sveriges lantbruksuniversitet (SLU) +Unit for Field-based Forest Research +Asa Research Station +SE-363 94 Lammhult +Sweden +","Martin Ahlström +Please login or request access to view contact information. +",2017 - present," +Outdoor, freshwater, deployed in an adaptable jetfloat, placed in the lake Feresjön, 2,5 km from the research station. +PE-film enclosures or 20 hardshell PE enclosures (ø = 0.9 m, depth = 1.5 m, volume = 700 l). +Open access to national and international researchers. + +",,"Advanced general understanding in ecology by using modularized experiments across SITES-AquaNet stations (Sweden) or potential collaborators (Sweden, Europe and other continents). Topics: biodiversity-functioning-stability relationships, community ecology, ecological stoichiometry, food web interactions, benthic-pelagic dynamics, biochemistry (carbon cycling), cyanobacterial blooms and global change research. Possibility to combine mechanistic experiments with lake monitoring data from Feresjön (e.g., phytoplankton, zooplankton, nutrients and on-site climate data, incl. temperature profile measurements). +"," + + + + + 57.164325, 14.782712 + +",,,"Apogee SQ-500 (PAR), CTG Trilux fluorometer (chlorophyll-a, phycocyanin and turbidity) and Aanderaa 4531 optode (O2 and temperature) sensors fulltime deployed in each enclosure, deployed with a Campbell CR1000 datalogger and an AM16/32B multiplexer (https://www.campbellsci.com). The datalogger has an ethernet interface for remote access through a mobile broadband router, for maintenance and data retrieval. Surveillance camera mounted for remote monitoring of the site. +An YSI ProODO instrument (DO) (https://www.ysi.com/proodo), an AP-2000 AquaRead Multiprobe (http://www.aquaread.com/portofolio/ap-2000/) equipped with a chlorophyll a sensor, and an Apogee MQ-500 (PAR) sensor with handheld meters. +Laboratory for filtering and extraction of samples for a wide range of analyses, cold storage and freezing rooms are available at the research station. Connection to laboratories for analysis at the Swedish University of Agricultural Sc.; the Geochemical laboratory (https://www.slu.se/en/departments/aquatic-sciences-assessment/laboratories/vattenlabb2/), and at the Uppsala University; the Erken Laboratory (http://www.ieg.uu.se/erken-laboratory). +","Capacity at the Asa Herrgård hotel and conference facility, neighbouring the research station; ca 60 persons (https://www.asaherrgard.se), and at the Asa Hostel, 1 km from the station: ca 60 persons, with cooking facilities (http://www.friheten.nu/en/) +","http://www.fieldsites.se/en-GB/sites-provides/sites-initiatives/sites-aquanet-32634394 +http://www.fieldsites.se/en-GB/about-sites/field-research-stations/asa-32652326 +"," + + + +Photo credit: Ola Langvall + + + + +Photo credit: Ola Langvall + + + + +  +","['http://mesocosm.org/wp-content/uploads/2018/05/Asa_1-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Asa_3-1024x574.jpg']",,,,"['57.164325', ' 14.782712']","{'coordinates': ['57.164325', '14.782712']}" +https://mesocosm.org/mesocosm/solbergstrand-experimental-facility-sef/,Solbergstrand Experimental Facility (SEF),Norwegian Institute for Water Research,Norway,Europe,"Norwegian Institute for Water Research + NIVA Oslo + Gaustadalléen 21 + NO-0349 Oslo +","1. Hartvig Christie +2. Nikolai Friberg +1. Please login or request access to view contact information., 2. Please login or request access to view contact information. +","1. 1996 - present, 2. 2015 - present","outdoor – pelagic/benthic – marine/freshwater + 1. Solbergstrand Mesocosms: Outdoor, 12 hard bottom mesocosms, 13 m3 ambient 1 m depth sea water flow through, benthic communities from 0-1.5 m depth, ca 40 species of benthic algae, up to 90 species of macrofauna. + 23 fibreglass and concrete seawater pools with volumes ranging from 26 to 550 m3,  a number of smaller testing facilities on land, and the seabed outside the station to manipulate and control marine ecosystems. + Facilities at Solbergstrand cover: + – hard-bottom seashores + – brackish water systems + – seaweed and kelp communities + – soft-bottom sediments from clean and polluted areas + – pelagic communities from the upper water depths + – a larger system to simulate mixing zones in rivers + – testing of water treatment systems + 2. Solbergstand Flumes: Outdoor, 16 stainless steel flumes: 10 m long, 0.5 m wide and with a maximum depth of 0.5 m (depth can be increased by Plexiglas panels). Discharge can be up to 3 L/s per flume with the current set-up so the facility mimics headwater streams. Flumes are seeded with both substrate and biota prior to experimentation depending on research question. However, longer experiments (months to years), and with natural colonization from a stream that runs next to them, is possible. Each flume can be individually re-circulated or have flow through of stream water. Water sources comprise both of ground water (limited amounts and not enough for continuous flow through) and stream water that are distributed to the flumes through header tanks. +","1. Simulation of natural environmental conditions such as current wave action, water quality, water flow, tidal range, temperature, salinity, pH, nutrients, flora, fauna + 2. Master variables: Discharge, water velocity, temperature. Substrate, water chemistry and biological components can be controlled +","1. Effects of environmental conditions/stressors on flora, fauna diversity and community function and ecological community structure + 2. Reponses of stream biotic communities and ecosystem functioning to climate change and other environmental stressors +"," + + + + + 59.6157541,10.6528178 + +",,,"1. 10 laboratories for experimentation and analysis activities, among them an authorised infection lab for fish and a special lab for working with radioactive trace elements, two well-equipped workshops. Water flow regulation, wave generator, tidal regulation, temperature, salinity, pH, nutrient dosing. + 2. Pumps, thermostats, groundwater dwelling. In addition temperature loggers, light meters, velocity meters etc. +","Cottage rental, lab and facilities, kitchen and meeting room for 24 persons are also available at the station +","http://www.niva.no/en/sok?sortBy=ByRelevancy&query=Solbergstrand +oddbjoern.pettersen@niva.no +"," + + + +1. Solbergstrand Mesocosms – Schematic basin design (from Kraufvelin 2007) + + + + +1. Solbergstrand Mesocosms – concrete seawater basins (Photo: SA Berger) + + + + +2. Solbersstrand Flumes (Photo: SA Berger) + + + + +2. Solbersstrand Flumes (Photo: SA Berger) + + + + +","['http://mesocosm.org/wp-content/uploads/2017/02/Drøbak_mesocosms-construction_400px-300x176.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Solbergstrand_Mesocosms_400x1-300x221.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Solbergstrand_Flumes_400px2-300x136.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Solberstrand_Flumes_400px1-300x213.jpg']",,,,"['59.6157541', '10.6528178']","{'coordinates': ['59.6157541', '10.6528178']}" +https://mesocosm.org/mesocosm/sletvik-field-station/,Sletvik Field Station,Norwegian University of Science and Technology,Norway,Europe,"Norwegian University of Science and Technology +Department of Biology +Trondhjem Biological Station +N-7491 Trondheim +","Anita Kaltenborn +Please login or request access to view contact information. +",,"outdoor – pelagic – marine +sea based mesocosms +","nutrients, … +","plankton dynamics +"," + + + + + 63.5929285,9.5457926 + +",,,"Two large lecturing and three smaller laboratories, one of which has access to salt water, and a meeting room. +","Accommodation for 50 people, kitchen and dining room, lounge, bedrooms, showers, washing rooms and a sauna. All meals are served at the station and normally consist of a self-service breakfast, lunch packet and dinner. The kitchen can be used in the evening by appointment with the station’s attendant chef. +","http://www.ntnu.edu/biology/sletvik-field-station +",,,,,,"['63.5929285', '9.5457926']","{'coordinates': ['63.5929285', '9.5457926']}" +https://mesocosm.org/mesocosm/wuhan-warming-mesocosm-facility-wwmf/,Wuhan Warming Mesocosm Facility (WWMF),"1. Institute of Hydrobiology, Chinese Academy of Sciences (IHB-CAS); 2. College of Fischeries, Huazhong Agricultural University",China,Asia," +Institute of Hydrobiology, Chinese Academy of Sciences; Address: No. 7 Donghu South Road, Wuchang District, Wuhan, Hubei Province, China +Huazhong Agricultural University; Address: No. 1, Shizishan Street, Hongshan District, Wuhan, Hubei Province, China + +","Prof. Dr. Jun Xu (group leader)   Email: xujun@ihb.ac.cn +Associate Prof. Dr. Min Zhang    Email: zhm7875@mail.hzau.edu.cn +Dr. Peiyu Zhang (Scientific Coordinator)  Email: zhangpeiyu@ihb.ac.cn +",2013 - present,"There are 48 mesocosms, each with 1.45 m in height, 1.5 m in diameter and 2560 L in volume. The facility is located at an experimental base in Huazhong Agriculture University in Wuhan, a subtropical area at the middle reach of Yangtze River. Temperature can be regulated automatically by computer systems in all the mesocosms. +"," +Temperature (warming, an elevation of 4.0 °C above the ambient temperature; heatwave, a treatment with a pre-programmed fluctuating temperature ranging from 0 °C to 8 °C above ambient) +Nutrients (nitrogen and phosphorus adding) + +"," +Climate change +eutrophication +food webs +macrophytes + +"," + + + + + 30.4670833, 114.35961111111111 + +","Along the Yangtze River, hundreds of shallow lakes are over-exploited by human beings, resulting in the deterioration of the functions and services performed by these lake ecosystems. Furthermore, these shallow lakes are suffering from global climate change, under continuous warming over the last few decades and an unpredicted pattern of extreme climate events. We are interested in how climate change will affect these shallow lakes in the future, and what we can do to mitigate these effects. +","We are a group of young scientists, led by Prof. dr. Jun Xu. We all have international education background (studied in The Netherlands, Sweden, Finland and US). We have been working on + +climate change effects on shallow freshwater ecosystems, focusing on +trophic interactions +food webs +stoichiometry +stable isotope ecology in aquatic ecosystems. + +"," +basic warming simulation mesocosms +labs for indoor controlled experiments +monitoring and analyzing of biological samples +access to the Advanced Analysis Center which belongs to IHB-CAS: all kinds of biological and chemical parameters can be analyzed. + +",,," + + + +Photo credit: Tao Wang + + + + +Photo credit: Chao Li + + + + +","['http://mesocosm.org/wp-content/uploads/2019/01/WWMF2.jpg', 'http://mesocosm.org/wp-content/uploads/2019/01/WWMF1-1024x767.jpg']",,,,"['30.4670833', ' 114.35961111111111']","{'coordinates': ['30.4670833', '114.35961111111111']}" +https://mesocosm.org/mesocosm/kob-kiel-outdoor-benthocosms/,KOB (Kiel-Outdoor-Benthocosms),GEOMAR-Helmholtz Center for Ocean Research,Germany,Europe,"GEOMAR-Helmholtz Center for Ocean Research + West shore campus + Düsternbrooker Weg 20 + D-24105 Kiel + East shore campus + Wischhofstr. 1-3 + D-24148 Kiel +","Professor Martin Wahl (KOB) +Please login or request access to view contact information. +",,"off-shore/outdoor/indoor – pelagic/benthic – marine/brackish + Kiel Outdoor Benthocosms – KOB + outdoor – benthic – marine/brackish + Floating infrastructure consisting of sub-dividable 3500 liter tanks, optionally covered by a fully translucent hood. When the system works in a flow-through mode all in situ fluctuations are admitted to the tanks and experimental treatments represent controlled deviations (delta-treatments) from this naturally fluctuating baseline +","KOB: CO2, temperature, irradiation, nutrients, oxygen, salinity +","KOB: responses of benthic communities to environmental shifts/fluctuations in temperature, pH, pCO2, oxygen, nutrients, salinity +"," + + + + + 54.330034,10.1482026 + +",,,"KOB: insulated tanks with 12 experimental units, heaters, coolers, automated, gas mixing unit, wave generators, internal circulation system, flow through system, surface and deep water supply, programmable climate simulation +",,"http://www.geomar.de/en/ + Media report: Window on future ocean +"," + + + +KOB – Kiel Outdoor Benthocosms (Photo: Martin Wahl) + + + + +KOB – Kiel Outdoor Benthocosms (Photo: Mark Lenz) + + + + +","['http://mesocosm.org/wp-content/uploads/2017/02/KOB_2_400_Wahl_1-282x300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/KOB_3_400_Lenz-300x201.jpg']",,,,"['54.330034', '10.1482026']","{'coordinates': ['54.330034', '10.1482026']}" +https://mesocosm.org/mesocosm/the-sven-loven-centre-for-marine-sciences/,The Sven Lovén Centre for Marine Sciences,University of Gothenburg,Sweden,Europe,"University of Gothenburg + PO Box 100, SE-405 30 Gothenburg, SWEDEN + Visiting address: Vasaparken +","Michael Klages +Please login or request access to view contact information. +",,"outdoor pelagic marine/brackish + “ecotrons” : 12 tanks (5.7 x 1.2 m) with adjustable depths + 1 channel of 7m and 1 to 1.5 m of water with recirculation +","control turbulence, temperature, salinity, sedimentation, nutritional conditions, light +","study of gene function, ecotoxicology, development, physiology, virology etc. +"," + + + + + 58.2498484,11.4449296 + +",,,"Laboratory of Marine Chemistry, molecular biology, genetics, living producing algae +",,"www.loven.gu.se + +  +"," + + + + +ecotrons + + + + +",['http://mesocosm.org/wp-content/uploads/2017/05/marine-ecotron.jpg'],,,,"['58.2498484', '11.4449296']","{'coordinates': ['58.2498484', '11.4449296']}" +https://mesocosm.org/mesocosm/medimeer-mediterranean-platform-for-marine-ecosystem-experimental-research/,MEDIMEER (MEDIterranean platform for Marine Ecosystem Experimental Research),CNRS,France,Europe,"MEDIMEER +2 Rue des Chantiers +34200, Sète +France +  +http://www.medimeer.univ-montp2.fr/ +","Dr. Behzad Mostajir +Please login or request access to view contact information. +",Since 2003,"Pelagic, marine, outdoor, in-situ + 1. Permanent floating structure: up to 12 pelagic mesocosms (1.2 m diameter, 2 m depth, ~2 m3 volume each). Fig. 1 & 2 + 2. Permanent floating structure: 3. Indoor structure: + 3. Mobile: LAMP is composed of 9 individual structures that can be deployed individually or bonded according to experimental design. Fig. 3 +","CO2, pH, nutrients, plankton composition, temperature, light, salinity, turbulence, conductivity, chlorophyll a fluorescence and dissolved oxygen concentration. Some of The data are stored and transmit in real time +","Plankton food web structure and functioning and their responses to global and local stressors. +"," + + + + + 43.4118721,3.6907914 + +","Interactions between planktonic organisms and changes in structure and function of planktonic food web. +","Effects of warming, increase of ultraviolet-B radiation and pH on planktonic food web. +","Available equipment and instruments include a spectrofluorimeter, a spectrophotometer with an integrating sphere, an oxygen titrator, an autoanalser for dissolved nutrients, a flow cytometer (FacsCalibur), an epifluorescence microscope, dissecting microsopes, and various benchtop instruments (peristaltic pumps, vacuum pumps, filtration sets, liquid nitrogen container, balances, incubators, drying ovens, cooled centrifuges, hoods, etc.) +Analytical platform, isotope laboratory, cold rooms, physical instrumentation (Conductivity, Temp, O2, pH), optical (fluorescence), biological (phytoplankton measures), biophysics (fluorimeter, spectrophotometer) +","Dormitories at the Marine Station of Sète   or possibility to rent the hotel rooms or a villa. +","http://www.medimeer.univ-montp2.fr/ +"," + + + +Fig.1 Permanent floating structure (Photo- Dr. Behzad Mostajir) + + + + +Fig.2 Pelagic mesocosms (Photo- Dr. Behzad Mostajir) + + + + +Fig.3 LAMP in Dia Island, Crete (Photo: Dr. Behzad Mostajir) + + + + +","['http://mesocosm.org/wp-content/uploads/2017/03/Fig.1-Permanent-floating-structure-Photo-Dr.-Behzad-Mostajir.png', 'http://mesocosm.org/wp-content/uploads/2017/03/Fig.2-Pelagic-mesocosms-Photo-Dr.-Behzad-Mostajir.png', 'http://mesocosm.org/wp-content/uploads/2017/02/LAMP-300x129.png']",,,,"['43.4118721', '3.6907914']","{'coordinates': ['43.4118721', '3.6907914']}" +https://mesocosm.org/mesocosm/rsd-facility/,RSD Facility,Faculty of Food Sciences and Fisheries,Poland,Europe,"Kazimierza Królewicza 4, 71550 Szczecin, Poland +","Remigiusz Panicz +Please login or request access to view contact information. +",More than 30 years (since 1985)," +120 cages (volume 3 cubic meters) submerged in a channel receiving post-cooling water from the Dolna Odra power plant (north-western Poland) +Double tent with 5 independent RAS or flow-through systems +Experimental aquaponics system +Hatchery (artificial breading, hatching and raring of through the early life stages) +Species: common carp, African catfish, goldfish, tench, sturgeons, other Cyprinids incl. ornamental varieties + +"," +Temperature, DO, pH (RAS) +Fish density +Flow rate + +"," +Feed design and fish trials +Fish disease detection (molecular methods, histology) +Marker assisted selection  + +"," + + + + + + + + + 53.209861,14.463944;53.44505,14.562861 + +","Aquaculture in RAS and cages +","Fish nutrition, Feed design, Epidemiology, Genetics, Molecular biology +","Fully equipped and operating hatchery, RAS, cage systems and laboratory +","Yes (basic conditions) +","https://wnozir.zut.edu.pl/index.php?id=3590 +Direct contact through e-mail +Panicz R., Sadowski J., Eljasik P. 2019. Detection of Cyprinid herpesvirus 2 (CyHV-2) in symptomatic ornamental types of goldfish (Carassius auratus) and asymptomatic common carp (Cyprinus carpio) reared in warm-water cage culture. Aquaculture. 504: 131-138. DOI:10.1016/j.aquaculture.2019.01.065 +Panicz R., Drozd R., Drozd A., Nędzarek A. 2017. Species and sex-specific variation in antioxidant status of tench (Tinca tinca), well catfish (Silurus glanis) and sterlet (Acipenser ruthenus) reared in cage culture. Acta Ichthyologica et Piscatoria. 47(3): 213-223. DOI: 10.3750/AEIP/02093 +Panicz R., Klopp C., Igielski R., Hofsoe P., Sadowski J., Coller Jr. J.A. 2017. Tench (Tinca tinca) high-throughput transcriptomics reveal feed dependent gut profiles. Aquaculture. 479: 200-207. DOI: 10.1016/j.aquaculture.2017.05.047 +Panicz R., Żochowska-Kujawska J., Sadowski J., Sobczak M. 2017. Effect of feeding various levels of poultry by-product meal on the blood parameters, filet composition and structure of female tenches (Tinca tinca). Aquaculture Research. 48: 5373-5384. DOI: 10.1111/are.13351 +Nguyen T.T., Jin Y., Kiełpińska J., Bergmann S.M., Lenk M., Panicz R. 2017. Detection of Herpesvirus anguillae (AngHV-1) in European eel Anguilla anguilla (L.) originating from northern Poland-assessment of suitability of selected diagnostic methods. Journal of Fish Dieseases 1717-1723. DOI: 10.1111/jfd.12689 +Drozd R., Panicz R., Jankowiak D., Hofsoe P., Drozd A., Sadowski J. 2014. Antoxidant enzymes in the liver and gills of Tinca tinca from various water bodies. Journal of Applied Ichthyology. 30: 2–6. DOI: 10.1111/jai.12420. +Panicz R., Hofsoe P., Sadowski J., Mysłowski B., Półgęsek M. 2013. Morphometric and molecular characterisation of Cyprinus carpio × Carassius auratus hybrids. Aquaculture International. 21(4): 751-758. DOI: 10.1007/s10499-012-9577-6 +Kempter J., Kiełpiński M., Panicz R., Sadowski J., Mysłowski B., Bergmann S. M. 2012. Horizontal transmission of koi herpes virus (KHV) from potential vector species to common carp. Bulletin of the European Association of Fish Pathologists., 32(6): 212-219. +"," + + + + + + + + + + + + + + + + + + + + + +","['http://mesocosm.org/wp-content/uploads/2019/03/RSD-Facility-300x177.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-69-of-76-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-22-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-20-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-19-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/PART_1548849527972-225x300.jpeg']",,,,"['53.209861', '14.463944']","{'coordinates': ['53.209861', '14.463944']}" +https://mesocosm.org/mesocosm/rsd-facility/,RSD Facility,Faculty of Food Sciences and Fisheries,Poland,Europe,"Kazimierza Królewicza 4, 71550 Szczecin, Poland +","Remigiusz Panicz +Please login or request access to view contact information. +",More than 30 years (since 1985)," +120 cages (volume 3 cubic meters) submerged in a channel receiving post-cooling water from the Dolna Odra power plant (north-western Poland) +Double tent with 5 independent RAS or flow-through systems +Experimental aquaponics system +Hatchery (artificial breading, hatching and raring of through the early life stages) +Species: common carp, African catfish, goldfish, tench, sturgeons, other Cyprinids incl. ornamental varieties + +"," +Temperature, DO, pH (RAS) +Fish density +Flow rate + +"," +Feed design and fish trials +Fish disease detection (molecular methods, histology) +Marker assisted selection  + +"," + + + + + + + + + 53.209861,14.463944;53.44505,14.562861 + +","Aquaculture in RAS and cages +","Fish nutrition, Feed design, Epidemiology, Genetics, Molecular biology +","Fully equipped and operating hatchery, RAS, cage systems and laboratory +","Yes (basic conditions) +","https://wnozir.zut.edu.pl/index.php?id=3590 +Direct contact through e-mail +Panicz R., Sadowski J., Eljasik P. 2019. Detection of Cyprinid herpesvirus 2 (CyHV-2) in symptomatic ornamental types of goldfish (Carassius auratus) and asymptomatic common carp (Cyprinus carpio) reared in warm-water cage culture. Aquaculture. 504: 131-138. DOI:10.1016/j.aquaculture.2019.01.065 +Panicz R., Drozd R., Drozd A., Nędzarek A. 2017. Species and sex-specific variation in antioxidant status of tench (Tinca tinca), well catfish (Silurus glanis) and sterlet (Acipenser ruthenus) reared in cage culture. Acta Ichthyologica et Piscatoria. 47(3): 213-223. DOI: 10.3750/AEIP/02093 +Panicz R., Klopp C., Igielski R., Hofsoe P., Sadowski J., Coller Jr. J.A. 2017. Tench (Tinca tinca) high-throughput transcriptomics reveal feed dependent gut profiles. Aquaculture. 479: 200-207. DOI: 10.1016/j.aquaculture.2017.05.047 +Panicz R., Żochowska-Kujawska J., Sadowski J., Sobczak M. 2017. Effect of feeding various levels of poultry by-product meal on the blood parameters, filet composition and structure of female tenches (Tinca tinca). Aquaculture Research. 48: 5373-5384. DOI: 10.1111/are.13351 +Nguyen T.T., Jin Y., Kiełpińska J., Bergmann S.M., Lenk M., Panicz R. 2017. Detection of Herpesvirus anguillae (AngHV-1) in European eel Anguilla anguilla (L.) originating from northern Poland-assessment of suitability of selected diagnostic methods. Journal of Fish Dieseases 1717-1723. DOI: 10.1111/jfd.12689 +Drozd R., Panicz R., Jankowiak D., Hofsoe P., Drozd A., Sadowski J. 2014. Antoxidant enzymes in the liver and gills of Tinca tinca from various water bodies. Journal of Applied Ichthyology. 30: 2–6. DOI: 10.1111/jai.12420. +Panicz R., Hofsoe P., Sadowski J., Mysłowski B., Półgęsek M. 2013. Morphometric and molecular characterisation of Cyprinus carpio × Carassius auratus hybrids. Aquaculture International. 21(4): 751-758. DOI: 10.1007/s10499-012-9577-6 +Kempter J., Kiełpiński M., Panicz R., Sadowski J., Mysłowski B., Bergmann S. M. 2012. Horizontal transmission of koi herpes virus (KHV) from potential vector species to common carp. Bulletin of the European Association of Fish Pathologists., 32(6): 212-219. +"," + + + + + + + + + + + + + + + + + + + + + +","['http://mesocosm.org/wp-content/uploads/2019/03/RSD-Facility-300x177.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-69-of-76-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-22-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-20-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-19-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/PART_1548849527972-225x300.jpeg']",,,,"['53.44505', '14.562861']","{'coordinates': ['53.44505', '14.562861']}" +https://mesocosm.org/mesocosm/gault-nature-reserve-mesocosm-platform/,Gault Nature Reserve Mesocosm Platform,McGill University,Canada,North America,"845 Sherbrooke St W +Montreal +QC H3A 0G4 +Canada +","Gregor Fussmann (PI), Please login or request access to view contact information. +David Maneli (Associate Director of Gault Nature Reserve) Please login or request access to view contact information. +",2012 - present,"A floating platform contains 8 arrays of 4 rings of a ~1 m diameter (i.e., maximal capacity = 32 mesocosms), which can be used to suspend polyethylene bags in the lake. Lake mesocosms can vary in depth, with the maximal lake depth at this location being ~7 m. Electrical wires are fed underneath the platform, with one electrical outlet providing a limited amount of power for each pair of rings. Gas tubing has also been fed under the platform. The floating dock is connected to the shore via a floating walkway. +The lake mesocosm platform is located in Lac Hertel at the Gault Nature Reserve. The watershed is fully forested and the surrounding park is owned by the University. However, the mesocosm platform is located within a part of the park that is off-limits to visitors. The access to the platform itself is protected via a fence, and there is a security camera. +A car or truck can reach 100 m away from the mesocosm platform. However, a golf cart, wagon or canoe can be borrowed to bring equipment to the platform. +The platform is not wheelchair accessible due to the presence of three steps. +"," +pH +DOC +Temperature +CO­2 +Nitrate +Phosphate +Zooplankton + +"," +Seasonal limnology +rapid evolution +plankton resource limitation and responses to environmental change +winter limnology +food web dynamics and processes + +"," + + + + + 45.543060, -73.150762 + +",,," +A permanent, long-term monitoring buoy is being installed in the lake about 100m from the mesocosm site, and data will be available via the Gault Nature Reserve. +Tubing for CO2 bubbling and mixing +Ice auger +Life jackets +An equipment storage cabin 100 m away is available for researchers +A lab space with running water and a fume hood is available ~1km away from the mesocosm platform + +","Researchers can stay on-site (~1 km from the platform) in cabins with bunk beds. +","https://gault.mcgill.ca/en/research-and-education/research/ +"," + + + +Photo credit: Gregor Fussmann + + + + +Photo credit: Egor Katkov + + + + +Photo credit: Gregor Fussmann + + + + +Photo credit: Egor Katkov + + + +  + + + +","['http://mesocosm.org/wp-content/uploads/2019/08/Gault-Mesocosms-4-credit-Gregor-Fussmann-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2019/08/Gault-Mesocosms-2-credit-Egor-Katkov-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2019/08/Gault-Mesocosms-5-credit-Gregor-Fussmann-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2019/08/Gault-Mesocosms-3-credit-Egor-Katkov-1024x576.jpg']",,,,"['45.543060', ' -73.150762']","{'coordinates': ['45.543060', '-73.150762']}" +https://mesocosm.org/mesocosm/silwood-mesocosm-facility-smf/,Silwood Mesocosm Facility (SMF),Imperial College London,United Kingdom,Europe,"Silwood Park Campus, Imperial College London, Ascot, UK +","Prof. Guy Woodward, Please login or request access to view contact information.;  +Dr. Michelle Jackson,Please login or request access to view contact information.m.jackson@imperial.ac.ukPlease login or request access to view contact information.; +Dr. Emma Ransome,Please login or request access to view contact information.e.ransome@imperial.ac.ukPlease login or request access to view contact information. +",Started 2016,"96 freshwater mesocosms, 32 more coming in 2017 +","Temperature, drought +","Climate change, Food webs, Biochemistry, Microbial Ecology +"," + + + + + 51.51772460,-0.17322940 + +",,,,"Accommodation is on site in private rooms with shared kitchen facilities. Silwood Park is close to Sunningdale which has shops and rail station with direct links to central London. +",," + + + + + + + + + +","['http://mesocosm.org/wp-content/uploads/2017/03/SMF-1.png', 'http://mesocosm.org/wp-content/uploads/2017/03/SMF-2.jpg']",,,,"['51.51772460', '-0.17322940']","{'coordinates': ['51.51772460', '-0.17322940']}" +https://mesocosm.org/mesocosm/exstream-system-china/,ExStream System China,Xi'an Jiaotong-Liverpool University,China,Asia,"Xi’an Jiaotong-Liverpool University 111 Ren’ai Road, +Suzhou Dushu Lake Science and Education Innovation District Suzhou Industrial Park +Suzhou, Jiangsu Province, +China 215123 +","Assoc. Prof. Yixin Zhang +ExStream network coordinator Asst. Prof. Jeremy J. Piggott +  +Yixin.Zhang@xjtlu.edu.cn +jeremy.piggott@tcd.ie +",operational since 2018,"The ExStream System comprises 128 circular stream mesocosms offering strict control of experimental variables, excellent statistical power and a high degree of realism, such as permitting natural immigration and emigration of stream organisms (invertebrates, algae and microbes) and achieving the same ambient temperature, light conditions and water chemistry as the adjoining river/stream. The mesocosms are arranged in eight blocks of 16 units each, and each of these blocks is continuously supplied by stream water gravity-fed from one of eight header tanks via 16 individual supply pipes. +  +The Experimental Stream mesocosm network (ExStream) comprises replicate installations in New Zealand, China, Japan, Germany and Ireland and is coordinated by Asst. Prof. Jeremy J. Piggott at Trinity College Dublin (jeremy.piggott@tcd.ie).   +"," +Nutrients +Sediments +Flow velocity +Temperature + +","The effects of multiple stressors on benthic macroinvertebrate communities and ecosystem functioning in streams +"," + + + + + 31.276111, 120.7325; 30.118056, 118.023889 + +","Benthic macroinvertebrate communities and ecosystem functioning in streams: Responses to multiple stressors’ impact. +","Stream Ecology, Community ecology +","At the location of Xi’an Jiaotong-Liverpool University, there are a complete set of lab facilities +","present for both locations +","Assoc. Prof. Yixin Zhang (http://www.xjtlu.edu.cn/en/departments/academic-departments/environmental-science/staff/yixin-zhang) +"," + + + +Photo credit: Noel Juvigny-Khenafou + + + + +Photo credit: Noel Juvigny-Khenafou + + + + +Photo credit: Noel Juvigny-Khenafou + + + + +Figure credit: Jeremy (Jay) Piggott + + + + +","['http://mesocosm.org/wp-content/uploads/2018/10/34498B12-BD94-4312-8FFD-C92FA6BA75D4@tcd.ie_-e1540461299359-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/54889AEB-229B-40CC-8773-52FAD7DE72D2@tcd.ie_-e1540461322675-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/F8410BFC-4161-4E95-9D6E-A1CBDECD2109@tcd.ie_-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"['31.276111', ' 120.7325']","{'coordinates': ['31.276111', '120.7325']}" +https://mesocosm.org/mesocosm/exstream-system-china/,ExStream System China,Xi'an Jiaotong-Liverpool University,China,Asia,"Xi’an Jiaotong-Liverpool University 111 Ren’ai Road, +Suzhou Dushu Lake Science and Education Innovation District Suzhou Industrial Park +Suzhou, Jiangsu Province, +China 215123 +","Assoc. Prof. Yixin Zhang +ExStream network coordinator Asst. Prof. Jeremy J. Piggott +  +Yixin.Zhang@xjtlu.edu.cn +jeremy.piggott@tcd.ie +",operational since 2018,"The ExStream System comprises 128 circular stream mesocosms offering strict control of experimental variables, excellent statistical power and a high degree of realism, such as permitting natural immigration and emigration of stream organisms (invertebrates, algae and microbes) and achieving the same ambient temperature, light conditions and water chemistry as the adjoining river/stream. The mesocosms are arranged in eight blocks of 16 units each, and each of these blocks is continuously supplied by stream water gravity-fed from one of eight header tanks via 16 individual supply pipes. +  +The Experimental Stream mesocosm network (ExStream) comprises replicate installations in New Zealand, China, Japan, Germany and Ireland and is coordinated by Asst. Prof. Jeremy J. Piggott at Trinity College Dublin (jeremy.piggott@tcd.ie).   +"," +Nutrients +Sediments +Flow velocity +Temperature + +","The effects of multiple stressors on benthic macroinvertebrate communities and ecosystem functioning in streams +"," + + + + + 31.276111, 120.7325; 30.118056, 118.023889 + +","Benthic macroinvertebrate communities and ecosystem functioning in streams: Responses to multiple stressors’ impact. +","Stream Ecology, Community ecology +","At the location of Xi’an Jiaotong-Liverpool University, there are a complete set of lab facilities +","present for both locations +","Assoc. Prof. Yixin Zhang (http://www.xjtlu.edu.cn/en/departments/academic-departments/environmental-science/staff/yixin-zhang) +"," + + + +Photo credit: Noel Juvigny-Khenafou + + + + +Photo credit: Noel Juvigny-Khenafou + + + + +Photo credit: Noel Juvigny-Khenafou + + + + +Figure credit: Jeremy (Jay) Piggott + + + + +","['http://mesocosm.org/wp-content/uploads/2018/10/34498B12-BD94-4312-8FFD-C92FA6BA75D4@tcd.ie_-e1540461299359-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/54889AEB-229B-40CC-8773-52FAD7DE72D2@tcd.ie_-e1540461322675-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/F8410BFC-4161-4E95-9D6E-A1CBDECD2109@tcd.ie_-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"[' 30.118056', ' 118.023889']","{'coordinates': ['30.118056', '118.023889']}" +https://mesocosm.org/mesocosm/exstream-system-ireland/,ExStream System Ireland,University College Dublin in collaboration with Trinity College Dublin,Ireland,Europe,"Belfield, Dublin 4 +","Assoc. Prof. Mary Kelly-Quinn +ExStream network coordinator Asst. Prof. Jeremy J. Piggott +  +mary.kelly-quinn@ucd.ie +jeremy.piggott@tcd.ie +","2016 present, A number of UCD/TCD projects will use the facility over the next three years (-2020).","The ExStream System comprises 128 circular stream mesocosms offering strict control of experimental variables, excellent statistical power and a high degree of realism, such as permitting natural immigration and emigration of stream organisms (invertebrates, algae and microbes) and achieving the same ambient temperature, light conditions and water chemistry as the adjoining river/stream. The mesocosms are arranged in eight blocks of 16 units each, and each of these blocks is continuously supplied by stream water gravity-fed from one of eight header tanks via 16 individual supply pipes. +The facility is mobile, currently housed in University College Dublin. +The Experimental Stream mesocosm network (ExStream) comprises replicate installations in New Zealand, China, Japan, Germany and Ireland and is coordinated by Asst. Prof. Jeremy J. Piggott at Trinity College Dublin (jeremy.piggott@tcd.ie).   +","Flow, can manipulate nutrient, sediment and other stressors +","Impact of multiple stressors & climate change on aquatic communities and ecosystem processes +"," + + + + + 53.307444, -6.227611 + +","Stream biodiversity and ecosystem function +","Multiple stressors and climate change +","Basic equipement. For detailed information please, mesage facility contacts. +","None +","Assoc. Prof. Mary Kelly-Quinn (http://www.ucd.ie/research/people/biologyenvscience/drmarykelly-quinn/) +Asst. Prof. Jeremy J. Piggott (https://www.tcd.ie/Zoology/research/groups/piggott/) +ExStream Ireland video:  https://youtu.be/OUeL_ePRq8A +"," + + + +Photo credit: Matthew Rose-Nel + + + + +Photo credit: Matthew Rose-Nel + + + + +Figure credit: Jeremy (Jay) Piggott + + + + +  +","['http://mesocosm.org/wp-content/uploads/2018/05/IMG_1176-683x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/DJI_0011-1024x575.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"['53.307444', ' -6.227611']","{'coordinates': ['53.307444', '-6.227611']}" +https://mesocosm.org/mesocosm/lunz-mesocosm-infrastructure-lmi/,Lunz Mesocosm Infrastructure (LMI),WCL - WasserCluster Lunz,Austria,Europe,"1) WCL – WasserCluster Lunz + Dr. Carl Kupelwieser Promenade 5 + A-3293 Lunz am See + 2) Institute of Hydrobiology and Aquatic Ecosystem Management (IHG) + University of Natural Resources and Life Sciences (BOKU) + Max-Emanuel-Straße 17 + 1180 Wien +","1A) Dr. Robert Ptacnik + 1B) Dr. Martin Kainz + 2) Ao.Univ.Prof. Dipl.-Ing. Dr. Stefan Schmutz, + Dipl.-Ing. Stefan Auer +1)Please login or request access to view contact information.2)Please login or request access to view contact information., Please login or request access to view contact information. +",1) 2012 - present 2) 2011 - present,"1A) WCL-Mesocosms-Ptacnik + 40 land-based mesososms (320 L each); water pipes for aeration and mixing; exchangeable inner walls; app. 500 m from lake; local tab water suitable for experiments (not chlorinated) + 1B) WCL-Mesocosms-Kainz + 24 land-based mesososms (400 L each), temperatured controlled, aerated, temperature sensors, remote controlled + 2) HyTEC + consists of two large channels (40 m length, 6 m width) fed with nutrient-poor lake water taken at different depths to vary water temperature. Peak flows of up to 600 l/s are produced to mimic hydropeaking, thermopeaking or extreme floods. + Channel size and morphology (slopes, structures substratum, etc.) is alterable, flow can be controlled, various experiments with different biological elements (fish, benthic invertebrates, algae, etc.) can be conducted in parallel (smaller sub-flumes within each large one) short-time and long-time experiments can be done simultaneously +","1A) WCL-Mesocosms-Ptacnik + Air flow; possibly shading; nutrient levels + 1B) WCL-Mesocosms-Kainz + Temperature, air flow + 2) HyTEC + Discharge, ramping rates of discharge, water temperature, substrate, channel morphology +","1A) WCL-Mesocosms-Ptacnik + Role of dispersal for maintenance of diversity; diversity-functioning research in plankton communities + 1B) WCL-Mesocosms-Kainz + Effects of temperature, heat waves, light, brownification on phytoplankton and zooplankton biodiversity and biochemical composition (elemental stoichiometry, fatty acids) + 2) HyTEC + Hydropeaking-related effects on various aquatic organism groups (juvenile fish, macroinvertebrates and development of benthic algae) and ecosystem processes such as litter decay, primary production + Effects of thermopeaking, analyses of multiple pressures (discharge, nutrients and temperature) + Fish protection and fish guidance efficiency (experiments with a flexible fish fence) +"," + + + + + 47.8598408,15.030520 + +",,,"1A) WCL-Mesocosms-Ptacnik + Sampling gear; standard water chemistry; meshes for size fractionation; water pre-filtration for filling mesocosms + 1B) WCL-Mesocosms-Kainz + Sampling gear, incl. plankton nets, water collection tubes, temperature gauges, heaters, aerators, computer controlled temperature systems, wooden cabin next to mesocosms Access to analyses (with costs) + Elemental analyses of C, N, S, O, H and stable isotopes, TOC analyser + 2) HyTEC + Fully automated discharge and water temperature interface, datalogger, flow velocity measurement systems, remote-controlled (IR-) video system, electrofishing devices, sampling gears, several tanks for fish hatchery, etc. + Cooperation with WasserCluster Lunz: experiments (benthic algae), field equipment and laboratory-infrastructure (nutrient analyses, DOC analyses, microscopy, HPLC) +","Some guestrooms at WasserCluster Lunz; numerous guesthouses in Lunz am See +","1) http://www.wcl.ac.at/index.php?id=31 +2) http://hydropeaking.boku.ac.at/hytec_en.htm +"," + + + +1A) WCL-Mesocosms-Ptacnik: Land-based tanks at lake shore in Lunz + + + + +1B) WCL-Mesocosms-Kainz: Land-based tanks at lake shore in Lunz + + + + +2) HyTEC Facility: Aerial view + + + + +2) HyTEC Facility: Total view upstream direction + + + + +2) HyTEC Facility; Aerial view of adaptation for fish guidance experiments + + + + +","['http://mesocosm.org/wp-content/uploads/2017/02/Ptacnik-Lunz_400-300x226.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Kainz_mesocosms_400-300x224.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/HyTEC_1_400px-300x300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/HyTEC_2_400px-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/HyTEC_3_400px-296x300.jpg']",,,,"['47.8598408', '15.030520']","{'coordinates': ['47.8598408', '15.030520']}" +https://mesocosm.org/mesocosm/shear-turbulence-resuspension-mesocosm-sturm-facility/,Shear TUrbulence Resuspension Mesocosm (STURM) facility,The University of Baltimore (UBalt),United States of America,North America,"UBalt STURM facility located at: +Patuxent Environmental and Aquatic Research Laboratory (PEARL), +Morgan State University, +10545 Mackall Road  +Saint Leonard, MD 20685 +USA +","Dr. Elka T. Porter, +Please login or request access to view contact information. +",2003 - present," +Six 1000L tanks (2 x 3 reps) with a 1m2 sediment surface area. +Can be set up as resuspension (R) tanks or as non resuspension (NR) tanks. + +"," +Bottom shear stress +Energy dissipation rate +RMS turbulent velocity + +"," +Benthic-pelagic coupling +tidal and episodic resuspension + +"," + + + + + 38.39364902663247,-76.50512446172259 + +","Effect of resuspension on ecosystem processes and the nitrogen cycle +","Benthic-pelagic coupling. +"," +Mixing system +turbidity monitoring +temperature monitoring + +","No lodging +",,,,,,,"['38.39364902663247', '-76.50512446172259']","{'coordinates': ['38.39364902663247', '-76.50512446172259']}" +https://mesocosm.org/mesocosm/the-river-laboratory-heated-pond-mesocosms/,The River Laboratory heated pond mesocosms,Queen Mary University of London,United Kingdom,Europe,"QMUL +Mile End Road +London E1 4NS +United Kingdom +","Prof Mark Trimmer +  +m.trimmer@qmul.ac.uk +",2006 - present," +20 pond mesocosms 2m diameter, arranged in pairs with one in each pair heated by 4°C relative to the other. +36 unheated pond mesocosms also available at the site. + +"," +temperature + +"," +Climate change, Ecosystem metabolism, NEP, ER (e.g. Yvon-Durocher et al. 2010. Proc R Soc B, 365: 2117-2126: Yvon-Durocher et al. 2017. Nature Climate Change 7: 209-213) +Body size, ecosystem functioning (e.g. Dossena et al 2012. Proc R Soc B 279: 3011-3019) +Gas exchange, Methanogenesis (e.g. Yvon-Durocher et al.2011  Global Change Biology, 17:1225-1234) + +"," + + + + + 50.6666667, -2.1666666666666665 + +"," +Climate change +Ecosystem metabolism + +"," +Metabolic theory +C and N dynamics + +"," +Continuous measurement of gas exchange +temperature with data loggers + +","available on site +","https://www.fba.org.uk/the-river-laboratory +"," + + + +Foto credit: Yizhu Zhu + + + + +Foto credit: Yizhu Zhu + + + + +","['http://mesocosm.org/wp-content/uploads/2018/11/Ponds-1-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/Ponds-2-e1542903074614-768x1024.jpg']",,,,"['50.6666667', ' -2.1666666666666665']","{'coordinates': ['50.6666667', '-2.1666666666666665']}" +https://mesocosm.org/mesocosm/exstream-system-germany/,ExStream System Germany,"University of Duisburg-Essen, Aquatic Ecosystem Research",Germany,Europe,"University of Duisburg-Essen, Aquatic Ecosystem Research +Universitaetsstrasse 5 +D-45141 Essen +Germany +","Prof. Florian Leese +ExStream network coordinator Asst. Prof. Jeremy J. Piggott +  +florian.leese@uni-due.de +jeremy.piggott@tcd.ie +",2013 - present,"The ExStream System comprises 128 circular stream mesocosms offering strict control of experimental variables, excellent statistical power and a high degree of realism, such as permitting natural immigration and emigration of stream organisms (invertebrates, algae and microbes) and achieving the same ambient temperature, light conditions and water chemistry as the adjoining river/stream. The mesocosms are arranged in eight blocks of 16 units each, and each of these blocks is continuously supplied by stream water gravity-fed from one of eight header tanks via 16 individual supply pipes. +  +The Experimental Stream mesocosm network (ExStream) comprises replicate installations in New Zealand, China, Japan, Germany and Ireland and is coordinated by Asst. Prof. Jeremy J. Piggott at Trinity College Dublin (jeremy.piggott@tcd.ie).   +"," +Fine sediment load +Flow velocity +Nutrient concentration (DIN; nitrate-N and ammonium-N combined + dissolved reactive phosphorus (DRP) [Breitenbach Experiment] +Salinity (manipulation of sodium chloride) [Felderbach Experiment] + +","Multiple-stressor effects on stream communities +"," + + + + + 51.349722, 7.170583 + +","Multiple stressor effecs on stream biodivrsity +","invertebrates, microorganisms, fungi. +","Basic equipment. For more details, message facility contact. +","At Felderback, private lodging. +","Project website: http://genestream.de +ExStream Germany video: https://youtu.be/a67G0GH9COs +"," + + + +Figure credit:Vasco Elbrecht + + + + +Photo credit: Vasco ELbrecht + + + + +Photo credit: Vasco Elbrecht + + + + +Figure credti: Jeremy (Jay) Piggott + + + + +  +","['http://mesocosm.org/wp-content/uploads/2018/05/Beerman-et-al-2017-SOTEN-1024x892.png', 'http://mesocosm.org/wp-content/uploads/2018/05/Breitenbach1.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Felderbach2-452x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"['51.349722', ' 7.170583']","{'coordinates': ['51.349722', '7.170583']}" +https://mesocosm.org/mesocosm/albufera-biological-station/,Albufera Biological Station,University of Valencia,Spain,Europe,"Catedrático José Beltrán 2, +46980 Paterna +(Spain) +","Andreu Rico +Please login or request access to view contact information. +  +",2021 - present,"The aquatic mesocosm facility of the Albufera Biological Station is made up of 30 mesocosms of >1 m3, stocked with aquatic plants, plankton, and macroinvertebrate species characteristic of Mediterranean coastal wetlands. +"," +Nutrient concentrations +Salinity +Presence/absence of macrophytes +Invasive Species +Contaminant concentrations + +"," +Response of aquatic ecosystems to multiple stressors related to global change, including + +chemical pollution, +salinization, +eutrophication, +etc. + + + +"," + + + + + 39.315582, -0.318789 + +","Assessment of the structural and functional response of Mediterranean aquatic ecosystems to multiple stressors +"," +Aquatic ecology +ecotoxicology +functional microbiology + +","30 mesocosms and all equipments needed for sampling and water quality assessments +","Yes (nearby in El Palmar) +",,"Mesocosm site, photo credits: Andreu Rico +  +photo credits: Andreu Rico +  +photo credits: Pablo Amador +  +photo credits: Pablo Amador +  +","['http://mesocosm.org/wp-content/uploads/2023/12/Andreu-Rico-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/Andreu-Rico-768x1024.jpeg', 'http://mesocosm.org/wp-content/uploads/2023/12/Pablo-Amador-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/Pablo-Amador-2-768x1024.jpg']",,,,"['39.315582', ' -0.318789']","{'coordinates': ['39.315582', '-0.318789']}" +https://mesocosm.org/mesocosm/mobicos-mobile-aquatic-mesocosm/,MOBICOS - Mobile Aquatic Mesocosm,Helmholtz Zentrum für Umweltforschung-UFZ,Germany,Europe,"Helmholtz Zentrum für Umweltforschung-UFZ +Brückstr. 3a +39114 Magdeburg +","Dr. Patrick Fink +Prof. Dr. Markus Weitere +Please login or request access to view contact information. +",,"outdoor/mobile – pelagic/benthic – freshwater +mobile containers to be deployed in or at rivers, reservoirs and lakes;  include  different basins to experimentally explore the response of natural systems to environmental factors such as nutrients, humic substances, temperature, etc. +","temperature, nutrients, humic substances +","ecological processes of pelagic/benthic organisms +"," + + + + + 52.1205333,11.627623699999958 + +",,,,,"http://www.ufz.de/index.php?de=22241 +https://www.ufz.de/index.php?en=39611 + +"," + + + + +MOBICOS (Mobile Aquatic Mesocosms) are mobile experimental containers in or close to aquatic systems. Photo: Helge Norf/UFZ + + + + + +In the MOBICOS-container scientists can experimentally comparare the growth of mussels (Corbicula fluminea) of the river Rhein und Elbe. Photo: Helge Norf/UFZ + + + + +","['http://mesocosm.org/wp-content/uploads/2017/05/Mobicos_container500px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Muschelaquarien_200px.jpg']",,,,"['52.1205333', '11.627623699999958']","{'coordinates': ['52.1205333', '11.627623699999958']}" +https://mesocosm.org/mesocosm/igb-lakelab/,IGB LakeLab,Leibniz-Institute for Freshwater Ecology and Inland Fisheries (IGB),Germany,Europe,"Leibniz-Institute for Freshwater Ecology and Inland Fisheries (IGB) + Müggelseedamm 310 + 12587 Berlin +","Prof. Mark O Gessner (Head of Department) +Dr. Jens C Nejstgaard (Scientific Coordinator) +Dr. Stella A Berger (Scientific Site Coordinator) +Please login or request access to view contact information. +",2011 - present,"Outdoor – pelagic/benthic – freshwater +24 large lake mesocosms, each 9 m diameter, 20 m depth, reaching into the sediment, water volume 1,270 m3 per mesocosm, one additional central unit 30 m diameter, volume 14,000 m3 +","e.g. thermocline depth, stratification, extreme wheather events, browning, nutrients +","Responses of the planktonic food web, biodiversity patterns, and biogeochemical processes and fluxes under climate change scenarios +"," + + + + + 53.1520282,13.0233035 + +",,,"Each of the 24 mesocosms is equipped with: + +an automatic profiler recordimg PAR, temperature, pH, oxygen, redox potential, conductivity, turbidity, and pigments to distinguish four major algal groups +an industrial computer recording and transmitting the collected data to servers at IGB +sediment traps +a height-adjustable water recirculation system with a perforated ring, rising conduit and pump + +","IGB guesthouse, 20 beds, kitchen; local B&B +","http://www.lake-lab.de +http://www.seelabor.de/ +","Schematic diagram of the LakeLab in Lake Stechlin, northeastern Germany Aerial photograph of the LakeLab in Lake Stechlin Photo credit: HTW Dresden-Oczipka Photo credit: P. Casper, IGB +","['http://mesocosm.org/wp-content/uploads/2017/02/Stechlin_DE_graphics_400px-300x272.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Areal_photo_©HTWDresden-Oczipka_400px-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/lakelab_map-300x111.jpg']",,,,"['53.1520282', '13.0233035']","{'coordinates': ['53.1520282', '13.0233035']}" +https://mesocosm.org/mesocosm/center-for-coastal-environmental-health-and-biomolecular-research-ccehbr/,Center for Coastal Environmental Health and Biomolecular Research-CCEHBR,National Oceanic and Atmospheric Administration Center - NOAA,USA,North-America,"National Oceanic and Atmospheric Administration Center – NOAA +","Dr. Mike Fulton +Please login or request access to view contact information. +",,"Indoor – benthic – marine + 12 replicate mesocosms with sediments (116 cm length × 49 cm width × 20 cm deep) +","tide simulations (estuary simulation) + insecticide, heavy metal, pharmaceutical or other material being tested. +","Simulation a specific estuarine system, determine the stability of their simulation, and evaluate effects of various chemical contaminants on the ecology of each system, eco-toxicological work on small tidal creeks +"," + + + + + 32.7524467,-79.8986098 + +",,,,,"http://coastalscience.noaa.gov/news/coastal-pollution/mesocosms-cutting-edge-in-research/ +Effects of chemically spiked sediments on estuarine benthic communities: a controlled mesocosm study, W. L. Balthis · J. L. Hyland · M. H. Fulton ·, P. L. Pennington · C. Cooksey · P. B. Key ·, M. E. DeLorenzo · E. F. Wirth, Environ Monit Assess (2010) 161:191–203 +"," + + + + +Greenhouse + + + + + +Mesocosm installation + + + + +","['http://mesocosm.org/wp-content/uploads/2017/05/Cherleston_meso3.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Charleston-mesocosms.jpg']",,,,"['32.7524467', '-79.8986098']","{'coordinates': ['32.7524467', '-79.8986098']}" +https://mesocosm.org/mesocosm/archipelago-benthic-mesocosm-network/,Archipelago Benthic Mesocosm Network,Åbo Akademi University,Finland,Europe,"Henrikinkatu 2, +20500 Åbo/Turku, +Finland +","Christian Pansch-Hattich (Dr., Prof. in Marine Ecology) +Please login or request access to view contact information., +Please login or request access to view contact information. +",2021 - ongoing,"Outdoor – Pelagic/Benthic – Marine/Brackish +Outdoor infrastructure consisting of 40 independent 600-liter tanks distributed across two marine field stations in the Archipelago Sea (Skärgårdscentrum Korpoström, 20 tanks) and the Åland Islands (Husö Biological Station, 20 tanks), Finland. The systems receive (filtered or unfiltered) through-flowing seawater (brackish conditions, salinities 5–6) from the nearby straights/bays, are computer-controlled for temperature manipulation, and are built flexibly for the manipulation of multiple parameters. +"," +Temperature +irradiation +nutrients +artificial light at night (ALAN) +(salinity, pH in progress) + +"," +Climate change (temperature variability and marine heatwave) +impacts on single species +benthic communities + +"," + + + + + + + 60.1102778,21.598055555555554;60.2794444,19.83138888888889 + +"," +Manipulation of community composition for testing facilitation effects of ecosystem engineer species in climate change (warming, thermal variability, and marine heatwaves) settings. +food web approaches + +"," +ALAN (artificial light at night) +multiple stressors (local, regional, global) +the systems can be used in connection to existing wave tanks for the manipulation of waves and water velocity, and/or highly replicated aquarium systems +the system is built flexibly encompassing 2×20 600L tanks or the work in experimental sub-units allowing smaller but up to 140 experimental units (20 L) + +"," +40 independent experimental units (140 to infinite subunits in these tanks) +heaters (Schego), coolers (Aqua Medic) +internal circulation (EHEIM) +flow-through system +programmable climate simulation (GHL) + +","Available at the field stations +","https://www.abo.fi/en/emb-research-infrastructure/mesocosms/ +https://pansch-research.com/?page_id=1592 +","Korpoström mesocosm tanks are equipped with constant flow and circulation of seawater from the adjacent bay. Electrical cabinets currently provide the possibility for monitoring and manipulation of seawater temperature. Seagrass shoots (upper left panel) are planted into separate sediment trays, photo credits: Christian Pansch Hattich Korpoström mesocosm system located at the Skärgårdscentrum Korpoström, Finland. 20 600L tanks receive seawater from the adjacent bay, photo credits: Christian Pansch-Hattich Husö mesocosm system located at Husö Biological Station, Åland, Finland. Seawater temperature monitoring and manipulation is achieved through Aqua Medic and GHL controlling units, as well as Aqua Medic cooling and Schego heading devices. photo credits: Christian Pansch-Hattich Husö mesocosm system located at Husö Biological Station, Åland, Finland. 20 600L tanks receive a flow-through of seawater from the adjacent bay. Christian Pansch-Hattich +","['http://mesocosm.org/wp-content/uploads/2024/07/3_small-1024x530.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/2_small-1024x567.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/5_small-1024x565.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/4_small-1024x560.jpg']",,,,"['60.1102778', '21.598055555555554']","{'coordinates': ['60.1102778', '21.598055555555554']}" +https://mesocosm.org/mesocosm/archipelago-benthic-mesocosm-network/,Archipelago Benthic Mesocosm Network,Åbo Akademi University,Finland,Europe,"Henrikinkatu 2, +20500 Åbo/Turku, +Finland +","Christian Pansch-Hattich (Dr., Prof. in Marine Ecology) +Please login or request access to view contact information., +Please login or request access to view contact information. +",2021 - ongoing,"Outdoor – Pelagic/Benthic – Marine/Brackish +Outdoor infrastructure consisting of 40 independent 600-liter tanks distributed across two marine field stations in the Archipelago Sea (Skärgårdscentrum Korpoström, 20 tanks) and the Åland Islands (Husö Biological Station, 20 tanks), Finland. The systems receive (filtered or unfiltered) through-flowing seawater (brackish conditions, salinities 5–6) from the nearby straights/bays, are computer-controlled for temperature manipulation, and are built flexibly for the manipulation of multiple parameters. +"," +Temperature +irradiation +nutrients +artificial light at night (ALAN) +(salinity, pH in progress) + +"," +Climate change (temperature variability and marine heatwave) +impacts on single species +benthic communities + +"," + + + + + + + 60.1102778,21.598055555555554;60.2794444,19.83138888888889 + +"," +Manipulation of community composition for testing facilitation effects of ecosystem engineer species in climate change (warming, thermal variability, and marine heatwaves) settings. +food web approaches + +"," +ALAN (artificial light at night) +multiple stressors (local, regional, global) +the systems can be used in connection to existing wave tanks for the manipulation of waves and water velocity, and/or highly replicated aquarium systems +the system is built flexibly encompassing 2×20 600L tanks or the work in experimental sub-units allowing smaller but up to 140 experimental units (20 L) + +"," +40 independent experimental units (140 to infinite subunits in these tanks) +heaters (Schego), coolers (Aqua Medic) +internal circulation (EHEIM) +flow-through system +programmable climate simulation (GHL) + +","Available at the field stations +","https://www.abo.fi/en/emb-research-infrastructure/mesocosms/ +https://pansch-research.com/?page_id=1592 +","Korpoström mesocosm tanks are equipped with constant flow and circulation of seawater from the adjacent bay. Electrical cabinets currently provide the possibility for monitoring and manipulation of seawater temperature. Seagrass shoots (upper left panel) are planted into separate sediment trays, photo credits: Christian Pansch Hattich Korpoström mesocosm system located at the Skärgårdscentrum Korpoström, Finland. 20 600L tanks receive seawater from the adjacent bay, photo credits: Christian Pansch-Hattich Husö mesocosm system located at Husö Biological Station, Åland, Finland. Seawater temperature monitoring and manipulation is achieved through Aqua Medic and GHL controlling units, as well as Aqua Medic cooling and Schego heading devices. photo credits: Christian Pansch-Hattich Husö mesocosm system located at Husö Biological Station, Åland, Finland. 20 600L tanks receive a flow-through of seawater from the adjacent bay. Christian Pansch-Hattich +","['http://mesocosm.org/wp-content/uploads/2024/07/3_small-1024x530.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/2_small-1024x567.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/5_small-1024x565.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/4_small-1024x560.jpg']",,,,"['60.2794444', '19.83138888888889']","{'coordinates': ['60.2794444', '19.83138888888889']}" +https://mesocosm.org/mesocosm/syke-mrc-marine-research-centre-mesocosm-facility/,SYKE-MRC (Marine Research Centre) Mesocosm Facility,Marine Research Centre,Finland,Europe,"Marine Research Centre (MRC) + Finnish Environment Institute SYKE + P.O.Box 140 + FI-00251 Helsinki + Finland +","Res. Prof. Timo Tamminen + Head of Laboratory Jukka Seppälä +Please login or request access to view contact information.,Please login or request access to view contact information. +",periodically since 1988,"pelagic – marine – indoor + Indoor experimental systems in a range of volumes, with integrated incubation condition control, data retrieval, and their on-line presentation. Also ice tanks available for ice ecology research +  +","Temperature, light, pH, pCO2, nutrient levels, community composition +","Planktonic food web, phytoplankton ecology, stoichiometry, biodiversity, ice ecology +"," + + + + + 60.203843,24.9617237 + +",,,"Wet labs, climatic chambers, advanced bio-optical instrumentation (spectrophotometry, spectrofluorometry, FRRF), microscope imaging instrumentation, flow cytometry, isotope lab, chemistry lab +","City location – commercial lodging +","http://www.finmari-infrastructure.fi/laboratories/syke-mrc-marine-ecology-laborato/ +"," + + + +ndoor medium-scale experimental unit + + + + +SYKE-MRC field mesocosm work at Tvärminne +  + + + + +","['http://mesocosm.org/wp-content/uploads/2017/02/plankton-tower-153x300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['60.203843', '24.9617237']","{'coordinates': ['60.203843', '24.9617237']}" +https://mesocosm.org/mesocosm/uib-mesocosm-centre-university-of-bergen-mesocosm-centre/,UiB Mesocosm Centre (University of Bergen Mesocosm Centre),University of Bergen (UiB),Norway,Europe,"University of Bergen (UiB) + Department of Biology + PO-Box 7803 + 5020 Bergen OR Thormøhlensgate 53 A & B + 5006 Bergen + NORWAY +","Prof. Jorun Egge +Please login or request access to view contact information. +",1978-present,"outdoor – pelagic – marine + 1. Floating platform + including up to 12 floating rings with mesocosm bags ranging from 10 to 30 m3,  diameter  2 m; length 5-10 m, see Fig.1 + 2. Land-based system + with up to 18 tanks of 2.5 m3 , diameter 1.5 m; height 1.5 m, deployed within 3 tanks of 30 m3 , diameter 5 m; height 1.5 m, see Fig.2 +",,"Studies of the whole microbial community from viruses to mesozooplankton, grazing studies, initiate and follow specific phytoplankton blooms (e.g. diatoms, Emiliania huxleyi) acidification experiments, testing outcome/results of simulation models +"," + + + + + 60.2695262,5.2234965 + +",,,"Small boats (with outboard motor), CTD w/fluorescence sensor, plankton nets and water samplers. Pumps and airlift systems for mesocosms. General lab equipment such as freezers, ovens and washing machines for lab equipment, Milli-Q water (small volumes only), distilled water, a cooled centrifuge, basic microscopes etc +In collaboration with UiB scientists: state-of the-art microscopy imaging, fluorometer, genomics, proteomics, X-ray fluorescence, Flow cytometry, FlowCam, and more +","Dormitory with single and double rooms  sleeping up to 30 guests, a few steps away from the laboratory building, modern large scale kitchen facilities where guests can provide their meals and a combined dining and living room. Laundry facility is available on site. +","http://www.uib.no/node/56734 +"," + + + + +Fig.1 Floating structure with 12 mesocosms (Photo: Stella A Berger) + + + + + +Fig.2 Land-based mesocosms (Photo: Stella A Berger) + + + + +","['http://mesocosm.org/wp-content/uploads/2017/02/Fig.6.2.1-1-300x222.png', 'http://mesocosm.org/wp-content/uploads/2017/02/Fig.6.2.1-2-300x225.png']",,,"Seawater enclosures +Nutrient composition, add/remove mesozooplankton, CO2/pH +Land based tanks +Nutrient composition, add/remove mesozooplankton CO2/pH, salinity, adjust light and temperature +","['60.2695262', '5.2234965']","{'coordinates': ['60.2695262', '5.2234965']}" +https://mesocosm.org/mesocosm/marine-ecosystems-research-laboratory-merl/,Marine Ecosystems Research Laboratory - MERL,University of Rhode Island,USA,North-America,"University of Rhode Island +","Prof. Candace Oviatt +Please login or request access to view contact information. +",1976-,"outdoor – pelagic – marine +Fourteen cylindrical enclosures, 1.8 m in diameter and 5.5 m in depth, arranged along an access deck outside and adjacent to the building +","Aquatic ecosystem studies includig nutrients, trace metals, other contaminants, salinity, hydrocarbons, larval fish, and animal species. +","Long-term experiments, often of a duration greater than one year, have been conducted to observe ecosystems under the influence of hydrocarbon, enhanced nutrients, different nutrient ratios, sewage sludge and effluent, polluted sediments, salinity gradients and stratification. + Many short-term experiments have been conducted to observe the behavior of several individual hydrocarbons, trace metals and animal species, such as larval fish. +"," + + + + + 41.49175,-71.4207629 + +",,,"The facility has laboratories for biology, radio-tracer studies, and nutrient chemistry: + – Analysis of dissolved and particulate nutrients with an Automated Analyzer. Phosphate, nitrate, nitrite, ammonia, and silicate analyses are available + – Chlorophyll extraction and analysis with a Turner Fluorometer + – Productivity measurements using a carbon-14 tracer + – Total Suspended Solids (TSS) analysis + – Dissolved Inorganic Carbon (DIC) analysis + – Benthic invertebrate identification and analysis – Winkler titrations +",,"http://www.gso.uri.edu/merl/merl.html +"," + + + + +MERL facility + + + + + +MERL outdoor mesocosms + + + + + +Schema of the MERL construction + + + + +","['http://mesocosm.org/wp-content/uploads/2017/05/merl_300.gif', 'http://mesocosm.org/wp-content/uploads/2017/05/Narragansett-US-RIMERL-deck_400.gif', 'http://mesocosm.org/wp-content/uploads/2017/05/Narragansett-US-RImerltankpic5_400.jpg']",,,,"['41.49175', '-71.4207629']","{'coordinates': ['41.49175', '-71.4207629']}" +https://mesocosm.org/mesocosm/artificial-stream-and-pond-system-fsa/,Artificial Stream and Pond System (FSA),German Environment Agency,Germany,Europe,"German Environment Agency +","Ralf Schmidt +Please login or request access to view contact information. +  +  +",Since 2001,"Outdoor and indoor pond and stream system. The facility comprises 8 indoor and 8 outdoor ponds and streams, the latter of 1.6 km total length (indoor + outdoor). Water bodies are large enough to carry all trophic levels including fish +","Control of light, temperature, flow velocity, wind, colonization of insects etc., +Simulation of groundwater flow in semi-natural conditions (influent/effluent flow regime, remobilization of substances) +","Ecotoxicological, ecological, and hydrological studies (fate and effects of pesticides, biocides, pharmaceuticals, or industrial chemicals in ponds or streams; fate of viruses in bathing waters; model verifications; vertical mass transport water/sediment; + light pollution) +"," + + + + + 52.4107352,13.3756523 + +","Ecotoxicological studies +","Upcoming years: mixture toxicity of chemicals, degradation of plastics, passive sampling (chemicals) +","Each stream and pond is equipped with online instruments to continuously measure conductivity, O2, pH, water level, temperature, turbidity and, in streams, flow velocity. Chemical variables such as contaminants in water, sediment and biota can be measured in the laboratory according to demands. FSA is well equipped with gas chromatographs-mass spectrometers (GC-MS), high-performance liquid chromatograph (HPLC), an inorganic carbon (IC) analyser, a TOC analyser, automated titration units, an ion chromatograph, a continuous flow analyser for nutrient analyses (N, P), etc. In addition, light conditions in and above the water of streams and ponds, chlorophyll a and phaeopigments, and many other biological variables are routinely analysed. All experimental data are fed into a central data base for quality checks and analysis. The input of data entry, in particular physico-chemical data, from defined analysis protocols is automated. The database user programme is independent of the system software and is available on the internet. +",,"https://www.umweltbundesamt.de/en/topics/chemicals/chemical-research-at-uba/artificial-stream-pond-system +Mohr et al. 2005 ESPR – Environ Sci & Pollut Res 12 (1) +"," + + + +Outside view of the hall housing the indoor artificial streams and ponds © Umweltbundesamt + + + + +Outdoor mesocosm system © Umweltbundesamt + + + + +Outdoor streams © Umweltbundesamt + + + + +","['http://mesocosm.org/wp-content/uploads/2017/02/Berlin_Marienfelde_aussen.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Berlin-Marienfelde_aussenan-300x185.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Berlin_Marienfelde_rinne_aus.jpg']",,,,"['52.4107352', '13.3756523']","{'coordinates': ['52.4107352', '13.3756523']}" +https://mesocosm.org/mesocosm/the-river-laboratory-experimental-stream-channel-mesocosms/,The River Laboratory experimental stream channel mesocosms,Queen Mary University of London,United Kingdom,Europe,"QMUL +Mile End Road +London E1 4NS +United Kingdom +","Dr John Iwan Jones +  +j.i.jones@qmul.ac.uk +",1998 - present,"12 flow-through gravel bed stream channels, each 12m long arranged in 4 blocks. Draws water from a chalk stream site of special scientific interest, colonized by natural communities.   +"," +Flow +Suspended sediment +Bed composition +Pesticides +[Dependent on experimental objectives, e.g. flow and colmation] + +"," +Drought (e.g. Ledger et al. 2013 Nature Climate Change 3: 223-227: Lu et al. 2016. Nature Climate Change 6: 875) +Low flows (e.g. Jones et al. 2015. Freshw. Biol. 60: 813-826) +Fine sediment (e.g. Growns et al. 2017. Marine and Freshwater Research 68: 496-505) +Pesticides + +"," + + + + + 50.6666667, -2.1833330555555555 + +"," +Impacts on invertebrate +algal and plant communities + +"," +Food web structure +hyporheic invertebrates +hyporheic chemistry +traits + +","All sampling and set up equipment available +","available on site +","https://www.fba.org.uk/the-river-laboratory +"," + + + +Foto credit: Iwan Jones + + + + +Foto credit: Iwan Jones + + + + +Foto credit: Iwan Jones + + + +  + + + +  +","['http://mesocosm.org/wp-content/uploads/2018/11/Streams-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/Streams-4-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/Streams-1-1024x768.jpg']",,,,"['50.6666667', ' -2.1833330555555555']","{'coordinates': ['50.6666667', '-2.1833330555555555']}" +https://mesocosm.org/mesocosm/au-lake-mesocosm-warming-experiment-lmwe/,AU Lake Mesocosm Warming Experiment (LMWE),Aarhus University (AU),Denmark,Europe,"Aarhus University (AU) + Nordre Ringgade 1 + 8000 Aarhus C + Denmark +","Prof. Erik Jeppesen +Please login or request access to view contact information. +  +",2003-present,"outdoor – pelagic/benthic – freshwater + 24 cylindrical outdoor mesocosms, each 2.8 m3 in volume +","Nutrients, temperature +","A unique long-term flow-through mesocosm facility with 11 years so far the world’s longest running mesocosm experiment addressing climate-change effects on lakes under contrasting nutrient levels and water clarity, population- and seasonal dynamics of underwater plants, plankton, production, respiration, stable isotopes, bacteria, fluxes of nutrients +"," + + + + + 56.244846,9.529916 + +",,,"Permanently installed probes in all mesocosms for oxygen and pH measurements, AU freshwater lab in Silkeborg (15 km) +",,," + + + +Schema of mesocosm tank + + + + +Mesocosm tanks in Silkeborg, DK + + + + +","['http://mesocosm.org/wp-content/uploads/2017/02/silkeborg_mesocosm_schema-300x210.png', 'http://mesocosm.org/wp-content/uploads/2017/02/silkeborg_mesocosm-300x223.png']",,,,"['56.244846', '9.529916']","{'coordinates': ['56.244846', '9.529916']}" +https://mesocosm.org/mesocosm/awri-mesocosm-facility/,AWRI mesocosm facility,"Annis Water Resources Institute, Grand Valley State University",USA,North America,"740 West Shoreline Drive +Muskegon, Michigan +49441 +USA +","Alan Steinman +Please login or request access to view contact information. +",2004 - present," +12 fiberglass tanks at 1325 liters, including metal halide, +timer-controlled lights, housed in a climate controlled room and connected to Muskegon Lake filtered water. + +"," +light + +"," +predator-prey interaction +microplastic impact +sediment contaminant +macrophyte-phytoplankton interaction +fish behavior +nutrient impacts + +"," + + + + + 43.224194,-86.235809 + +"," +Invasive species +eutrophication +climate change + +",,,"not on site +","https://www.gvsu.edu/wri/facility-103.htm +"," + + + +Photo credits: AWRI GVSU + + + + +Photo credit: AWRI GVSU + + + + +Photo credits: AWRI GVSU + + + + +","['http://mesocosm.org/wp-content/uploads/2022/09/Full_field-station_2.1-683x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2022/09/mesocosm.1-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2022/09/P3080003.jpg']",,,,"['43.224194', '-86.235809']","{'coordinates': ['43.224194', '-86.235809']}" +https://mesocosm.org/mesocosm/gropello-21026-gaviratevarese/,"Gropello, 21026 Gavirate/Varese",Institut Dr. Nowak (a),Italy,Europe,"Institut Dr. Nowak (a) + Abteilung Limnologie + Mayenbrook 1 + D – 28870 Ottersberg  + + University of Insubria (b) + Department of theoretical and applied sciences, Ecology unit + Via H. Dunant 3 + I – 21100 Varese +","a) Dr. Said Yasseri + b) Prof. Dr. Giuseppe Crosa + Please login or request access to view contact information. +",02/2009 - 07/2009 and 11/2009 - 10/2010,"Outdoor, pelagic/benthic, freshwater + floating platform including 3 floating PE-rings with mesocosms reaching into the sediment, 47 m³ per mesocosm, each 2 m diameter and 15 m depth (see Fig. 1) +","1)   Water: e.g. nutrients, species composition (algae & zooplankton), carbon, metals, ecotoxicology +2) Sediment: e.g. nutrients, metals, ecotoxicology +","Nutrients, quantification of sediment P-release, + effects of lanthanum modified clay on the P-release +"," + + + + + 45.799026,8.7300945 + +",,,"Mobile mesocosm structure, can be installed on other study sites +",,"Crosa G, Yasseri S, Novak K-E, Caziani A, Roella V, Zaccara S. 2013. Recovery of Lake Varese: reducing trophic status through internal P load capping, Fundamental and Applied Lmnology, Vol. 183/1, 49-61. +"," + + + +Mesocosm installation in Lago di Varese (Photo by Institute Dr. Novak) + + + + + + + +Mesocosms in Lago di Varese (Photo by Institute Dr. Novak) + + + + + +Sketch of the mesocosm construction (Dr. Yasseri) + + + + + +Location of Lago di Varese: Latitude 45.818369; Longitude 8.738972 + + + + +","['http://mesocosm.org/wp-content/uploads/2017/05/Lago_di_Varese_1_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lago_di_Varese_2_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lago_di_Varese_construction_300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/LagodiVarese_300.png']",,,,"['45.799026', '8.7300945']","{'coordinates': ['45.799026', '8.7300945']}" +https://mesocosm.org/mesocosm/exstream-system-new-zealand/,ExStream System New Zealand,"University of Otago, Department of Zoology",New Zealand,Australasia,"340 Great King St +Dunedin 9054 +New Zealand +","Assoc. Prof. Christoph D. Matthaei +ExStream network coordinator Asst. Prof. Jeremy J. Piggott +  +christoph.matthaei@otago.ac.nz  +jeremy.piggott@tcd.ie +",2007 - present,"The ExStream System comprises 128 circular stream mesocosms offering strict control of experimental variables, excellent statistical power and a high degree of realism, such as permitting natural immigration and emigration of stream organisms (invertebrates, algae and microbes) and achieving the same ambient temperature, light conditions and water chemistry as the adjoining river/stream. The mesocosms are arranged in eight blocks of 16 units each, and each of these blocks is continuously supplied by stream water gravity-fed from one of eight header tanks via 16 individual supply pipes. +  +The Experimental Stream mesocosm network (ExStream) comprises replicate installations in New Zealand, China, Japan, Germany and Ireland and is coordinated by Asst. Prof. Jeremy J. Piggott at Trinity College Dublin (jeremy.piggott@tcd.ie).   +"," +Current velocity +flow +nutrients +fine sediment +pesticides +antibiotics +nitrification inhibitors +light levels +water temperature +grazing pressure + +","Multiple-stressor effects on stream ecosystems; also natural drivers shaping stream communities +"," + + + + + -45.06337, 170.44303 + +","Multiple-stressor effects on stream ecosystems; also natural drivers shaping stream communities +","Multiple-stressor effects on stream ecosystems +","Everything needed to run the experiments +","Caravan camping is facilitated through the facility. +","Blog post: https://jappliedecologyblog.wordpress.com/2015/07/03/exstream-study-assesses-stream-ecosystem-functioning-the-effects-of-climate-warming-multiple-agricultural-stressors/ +Short video about ExStream System research: https://vimeo.com/243219546 +"," + + +  +from: Piggott et al. 2015, Global Chnage Biology, 21, 206-222 + + + + +Photo credit: Jeremy (Jay) Piggott + + + + +Figure credit: Jeremy (Jay) Piggott + + + +  +Figure credit: Jeremy (Jay) Piggott + + + + +​ +  +","['http://mesocosm.org/wp-content/uploads/2018/10/Piggott-et-al.-2015-Global-Change-Biology-21-206-222.-959x1024.png', 'http://mesocosm.org/wp-content/uploads/2018/10/Kauru-ExStream-Under-the-Rainbow-1024x589.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/ExStream-mesocosms-960x1024.png', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"['-45.06337', ' 170.44303']","{'coordinates': ['-45.06337', '170.44303']}" +https://mesocosm.org/mesocosm/mesocosms-experimental-garden-radboud-university/,Mesocosms – experimental garden Radboud University,Radboud University,Netherlands,Europe,"Comeniuslaan 4, 6525 HP Nijmegen +"," Sarian Kosten +Please login or request access to view contact information. +",>10 (the current mesocosms are 2 years old),"16 (appr. 800L) outdoor mesocosms 115 × 75 [diameter × depth in cm]; roughly 1 m²) placed into the ground to buffer temperature fluctuations. Electricity and potable and groundwater taps nearby. +The 2-year old mesocosms have been used to study the effect of fish on sediment-water nutrient fluxes and greenhouse gas emissions. Earlier mescosms work (in the previous set of mesocosms) focused on the impact of eutrophication on different plant species. +","None (exposed to ambient light, temperature fluctuations dampened because the mesocosms are dug into the ground. +","Greenhouse gases, biogeochemistry (emphasis on eukaryotes (fish & plants) on GHG emission, conservation (e.g. effect of prevention of bioturbation on submerged macrophytes) +"," + + + + + 51.822777,5.8733333 + +","Eutrophication, primary producers, fish, biogeochemistry, greenhouse gases +","The carbon balance of inland waters +Effects of climate change on aquatic ecology and water quality +Competition between different groups of primary producers (submerged and floating macrophytes, algae and cyanobacteria). +","The Institute for Water and Wetland Research of the Radboud University and the Department of Aquatic Ecology and Environmental Biology maintain a state-of-the-art biogeochemistry lab with expert technicians and analytical equipment for, among others, next-generation (NIRS-CRD) gas analyzers (Picarro G2508 & Los Gatos Ultraportable GGA), an IRGA for dissolved CO2 and CH4 measurements, instruments for the chemical analysis of water and sediment (ICP-OES, ICP-MS, spectrophotometric analyzers, microwave destruction units, DOC/DON analyzers, C-N analyzers, HPLC, HPLC-amino acid analyzer, IRMS, Phytopam). In addition, we have microscale dissolved oxygen micro-optodes and micromanipulator as well as O2 spots for non-invasive measurements in bottles and cores (all Presens), freeze-dryers and analytical balances including a sedimentation balance. Our field instrumentation includes HOBO light and temperature loggers, Hach multimeters for conductivity, temperature, pressure, and optical probes for dissolved oxygen. Furthermore, the department is well equipped with experimental facilities with, besides our mesocosms, greenhouse facilities, aquaria and pumping systems, water-baths, climate rooms. A GC-MS for CH4 stable isotope analysis is available at the Microbiology Department. +","Guest house at a distance of <500m. +https://www.ru.nl/english/about-us/services-facilities/guesthouse/ +","https://www.ru.nl/bgard/research-facilities/experimental-field/ +https://www.ru.nl/science/aquatic +Oliveira Junior, E. S., R. J. M. Temmink, B. F. Buhler, R. M. Souza, N. Resende, T. Spanings, C. C. Muniz, L. P. M. Lamers and S. Kosten (2019). “Benthivorous fish bioturbation reduces methane emissions, but increases total greenhouse gas emissions.”  64(1): 197-207. +Tang, Y., S. F. Harpenslager, M. M. L. van Kempen, E. J. H. Verbaarschot, L. M. J. M. Loeffen, J. G. M. Roelofs, A. J. P. Smolders and L. P. M. Lamers (2016). “Aquatic macrophytes can be used for wastewater polishing, but not for purification in constructed wetlands.” Biogeosciences Discuss. 2016: 1-32. +"," + + + +Photo credit: Sarian Kosten + + + + +Photo credit: Sarian Kosten + + + + +","['http://mesocosm.org/wp-content/uploads/2019/03/Radboud_mesocosm1-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Radboud_mesocosm2-300x169.jpg']",,,,"['51.822777', '5.8733333']","{'coordinates': ['51.822777', '5.8733333']}" +https://mesocosm.org/mesocosm/hungarian-pond-network/,Hungarian Pond Network,Centre for Ecological Research,Hungary,Europe,"Centre for Ecological Research +H-1113 Budapest, Karolina út 29. +Hungary +","Dr. Csaba Vad +Please login or request access to view contact information. +  +",2023 - present,"A standardized outdoor mesocosm infrastructure spread across Hungary. Each of the four systems consist of 24 1000-L tanks mimicking small ponds. They are installed 1.5 m apart from each other, all of them are equipped with a temperature logger, half of them with a heating device. +"," +Temperature + +"," +Pond ecology +Plankton ecology +Trophic interactions +Climate change + +"," + + + + + + + 47.705277833333334,19.228137999999998;46.870555555555555,19.422222222222224;46.88,17.66861111111111;47.603611111111114,21.3575; + +",,,"Temperature control, incl. heaters and loggers +",,"https://ecolres.hu/en/home/ +https://ecolres.hu/en/kutatocsoportok/plankton-ecology-research-group/ +","The locations of the four HPN four mesocosm facilities across Hungary. (Photo credits: Centre for Ecological Research) +A mesocosm at the Fülöpháza HPN facility. (Photo credit: Csaba Vad) +The Vácrátót HPN mesocosm facility during winter. (Photo credit: Csilla Laskai) +A mesocosm at the Zánka facility. (Phto credit: Csilla Laskai) +  +","['http://mesocosm.org/wp-content/uploads/2024/01/Photo-1.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-2-1024x461.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/photo-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-4-1024x768.jpg']",,,,"['47.705277833333334', '19.228137999999998']","{'coordinates': ['47.705277833333334', '19.228137999999998']}" +https://mesocosm.org/mesocosm/hungarian-pond-network/,Hungarian Pond Network,Centre for Ecological Research,Hungary,Europe,"Centre for Ecological Research +H-1113 Budapest, Karolina út 29. +Hungary +","Dr. Csaba Vad +Please login or request access to view contact information. +  +",2023 - present,"A standardized outdoor mesocosm infrastructure spread across Hungary. Each of the four systems consist of 24 1000-L tanks mimicking small ponds. They are installed 1.5 m apart from each other, all of them are equipped with a temperature logger, half of them with a heating device. +"," +Temperature + +"," +Pond ecology +Plankton ecology +Trophic interactions +Climate change + +"," + + + + + + + 47.705277833333334,19.228137999999998;46.870555555555555,19.422222222222224;46.88,17.66861111111111;47.603611111111114,21.3575; + +",,,"Temperature control, incl. heaters and loggers +",,"https://ecolres.hu/en/home/ +https://ecolres.hu/en/kutatocsoportok/plankton-ecology-research-group/ +","The locations of the four HPN four mesocosm facilities across Hungary. (Photo credits: Centre for Ecological Research) +A mesocosm at the Fülöpháza HPN facility. (Photo credit: Csaba Vad) +The Vácrátót HPN mesocosm facility during winter. (Photo credit: Csilla Laskai) +A mesocosm at the Zánka facility. (Phto credit: Csilla Laskai) +  +","['http://mesocosm.org/wp-content/uploads/2024/01/Photo-1.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-2-1024x461.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/photo-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-4-1024x768.jpg']",,,,"['46.870555555555555', '19.422222222222224']","{'coordinates': ['46.870555555555555', '19.422222222222224']}" +https://mesocosm.org/mesocosm/hungarian-pond-network/,Hungarian Pond Network,Centre for Ecological Research,Hungary,Europe,"Centre for Ecological Research +H-1113 Budapest, Karolina út 29. +Hungary +","Dr. Csaba Vad +Please login or request access to view contact information. +  +",2023 - present,"A standardized outdoor mesocosm infrastructure spread across Hungary. Each of the four systems consist of 24 1000-L tanks mimicking small ponds. They are installed 1.5 m apart from each other, all of them are equipped with a temperature logger, half of them with a heating device. +"," +Temperature + +"," +Pond ecology +Plankton ecology +Trophic interactions +Climate change + +"," + + + + + + + 47.705277833333334,19.228137999999998;46.870555555555555,19.422222222222224;46.88,17.66861111111111;47.603611111111114,21.3575; + +",,,"Temperature control, incl. heaters and loggers +",,"https://ecolres.hu/en/home/ +https://ecolres.hu/en/kutatocsoportok/plankton-ecology-research-group/ +","The locations of the four HPN four mesocosm facilities across Hungary. (Photo credits: Centre for Ecological Research) +A mesocosm at the Fülöpháza HPN facility. (Photo credit: Csaba Vad) +The Vácrátót HPN mesocosm facility during winter. (Photo credit: Csilla Laskai) +A mesocosm at the Zánka facility. (Phto credit: Csilla Laskai) +  +","['http://mesocosm.org/wp-content/uploads/2024/01/Photo-1.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-2-1024x461.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/photo-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-4-1024x768.jpg']",,,,"['46.88', '17.66861111111111']","{'coordinates': ['46.88', '17.66861111111111']}" +https://mesocosm.org/mesocosm/hungarian-pond-network/,Hungarian Pond Network,Centre for Ecological Research,Hungary,Europe,"Centre for Ecological Research +H-1113 Budapest, Karolina út 29. +Hungary +","Dr. Csaba Vad +Please login or request access to view contact information. +  +",2023 - present,"A standardized outdoor mesocosm infrastructure spread across Hungary. Each of the four systems consist of 24 1000-L tanks mimicking small ponds. They are installed 1.5 m apart from each other, all of them are equipped with a temperature logger, half of them with a heating device. +"," +Temperature + +"," +Pond ecology +Plankton ecology +Trophic interactions +Climate change + +"," + + + + + + + 47.705277833333334,19.228137999999998;46.870555555555555,19.422222222222224;46.88,17.66861111111111;47.603611111111114,21.3575; + +",,,"Temperature control, incl. heaters and loggers +",,"https://ecolres.hu/en/home/ +https://ecolres.hu/en/kutatocsoportok/plankton-ecology-research-group/ +","The locations of the four HPN four mesocosm facilities across Hungary. (Photo credits: Centre for Ecological Research) +A mesocosm at the Fülöpháza HPN facility. (Photo credit: Csaba Vad) +The Vácrátót HPN mesocosm facility during winter. (Photo credit: Csilla Laskai) +A mesocosm at the Zánka facility. (Phto credit: Csilla Laskai) +  +","['http://mesocosm.org/wp-content/uploads/2024/01/Photo-1.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-2-1024x461.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/photo-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-4-1024x768.jpg']",,,,"['47.603611111111114', '21.3575']","{'coordinates': ['47.603611111111114', '21.3575']}" +https://mesocosm.org/mesocosm/marine-plant-mesocosm-system/,Marine Plant Mesocosm System,CCMAR – Centre of Marine Sciences,Portugal,Europe,"Universidade do Algarve +Campus de Gambelas, Ed.7 +8005-139 Faro +Portugal +","Prof. Adelino Canário +Dr. João Silva +  +acanario@ualg.pt +jmsilva@ualg.pt +",,"This facility is a marine infrastructure, incorporating three complementary mesocosm systems: + +Outdoor system, modular, with up to 40 independent flow-through 100 L tanks. Each experimental tank is linked to a dedicated head-tank, allowing true replication and random distribution of treatment levels across the system. The experimental tanks were conceived to accommodate rooted marine plants (seagrasses) but are easily adaptable to other organisms. CO2-enriched air is prepared in a 5000 L reservoir (IRGA-controlled mixture) and bubbled in the individual head-tanks. +Indoor system, with similar design and operating principle, fitted with 30 L aquaria and artificial light. +Outdoor system, 200 L flow-through experimental tanks. Water is supplied from a single head-tank, where pH is used to regulate CO2 injection. + +","pCO2, pH, water-flow, nutrient concentrations, light levels +",," + + + + + 37.006, -7.966 + +",,,"Control systems based on real-time CO2 analysis, alkalinity titrators, water chemistry sensors. +","A wide range of hotels, hostels and apartments are available in Faro. +","https://www.ccmar.ualg.pt +https://www.ccmar.ualg.pt/page/aquaexcel2020 +  +"," + + + +Photo credit: João Silva + + + + +Photo credit: João Silva + + + + +Photo credit: João Silva + + + + +","['http://mesocosm.org/wp-content/uploads/2018/05/CCMAR_mesocosm_2-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/CCMAR_mesocosm_1-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/CCMAR_mesocosm_3.jpg']",,,,"['37.006', ' -7.966']","{'coordinates': ['37.006', '-7.966']}" +https://mesocosm.org/mesocosm/exstream-brazil/,ExStream Brazil,Universidade Federal do ABC (Federal University of ABC),Brazil,South America,"Av. dos Estados, 5001, B. Santa Terezinha, Santo André, SP, Brazil. CEP 09210-580 +","Adjunct Professor Ricardo Hideo Taniwaki +Please login or request access to view contact information. +",0,"The ExStream System comprises 128 circular stream mesocosms offering strict control of experimental variables, excellent statistical power and a high degree of realism, such as permitting natural immigration and emigration of stream organisms (invertebrates, algae and microbes) and achieving the same ambient temperature, light conditions and water chemistry as the adjoining river/stream. The mesocosms are arranged in eight blocks of 16 units each, and each of these blocks is continuously supplied by stream water gravity-fed from one of eight header tanks via 16 individual supply pipes. +The Experimental Stream mesocosm network (ExStream) comprises replicate installations in New Zealand, China, Japan, Germany and Ireland and is coordinated by Asst. Prof. Jeremy J. Piggott at Trinity College Dublin (jeremy.piggott@tcd.ie).    +","Current velocity, flow, nutrients, fine sediment, pesticides, antibiotics, nitrification inhibitors, light levels, water temperature, grazing pressure +","Multiple-stressor effects on stream ecosystems; also, natural drivers shaping stream communities +"," + + + + + -23.060634, -48.630102 + +","Multiple-stressor effects on stream ecosystems; also natural drivers shaping stream communities +","Multiple-stressor effects on stream ecosystems +","Everything needed to run the experiments +","Dorms for researchers and students (http://www.esalq.usp.br/svee/Itatinga/Itatinga_Planta.pdf) +","Piggott, J.J., Salis, R.K., Lear, G., Townsend, C.R. & Matthaei, C.D. (2015) Climate warming and agricultural stressors interact to determine stream periphyton community composition. Global Change Biology, 21, 206-222. +>15 publications in scientific journals by C.D. Matthaei, J. J Piggott and coauthors (https://www.otago.ac.nz/zoology/staff/matthaei.html) +Blog post: https://jappliedecologyblog.wordpress.com/2015/07/03/exstream-study-assesses-stream-ecosystem-functioning-the-effects-of-climate-warming-multiple-agricultural-stressors/ +Short video about ExStream System research: https://vimeo.com/243219546 +",,,,,,"['-23.060634', ' -48.630102']","{'coordinates': ['-23.060634', '-48.630102']}" +https://mesocosm.org/mesocosm/mesocosm-facility-at-umea-marine-sciences-center-mf-umsc/,Mesocosm Facility at Umeå Marine Sciences Center (MF-UMSC),Umeå Universitet (UmU),Sweden,Europe,"Umeå University (UmU)SE-90187 Umeå +SWEDEN +http://www.umf.umu.se/english/?languageId=1 +","Henrik Larsson +Please login or request access to view contact information. +",2007 to present,"Indoor – pelagic – marine, brackish, (freshwater), 12 tanks of 5 m depth, 2 m3 volume. +Outdoor- pelagic – marine, brackish, (freshwater), 24 tanks of 1 m3. Sediment may be added. +The facility is located close to the seashore in the northern part of the Baltic Sea. The water outside of the field station is ice covered for 3-5 months a year, and brackish with a salinity around 3 PSU. +The water intake to the indoor mesocosms is situated 800 m off-shore at 2 and 8 meter depths. The mesocosms can also be filled with sea, lake or river water transported from elsewhere. Filling can be done through filters of selectable mesh sizes, down to 1 μm, an semi-automatic water renewal system with controllable turnover rate are also available. The indoor facility consists of 12 cylindrical mesocosms with water columns 4.86 m high and 0.73 m in diameter (volume ca. 2 m3). Temperature can be controlled and manipulated in 3 different sections of each mesocosm. This enables for projects that require stratification, controlled convective stirring or both. +The light sources are Valoya R-258 (Light DNA), especially produced with the aim to closely mimic the spectra of the sun. These lamps are handled by time-programs that controls spectra and intensity according to lattitude and time of day.   +Four freezers are installed on top of every three mesocosms, this enables control of the air temperature above the water columns down to -20o C. Projects that require ice can thus be carried out, and parameters such as freezing or thawing rate can be adjusted. This latter option allows for systematic seeding experiments. +The ventilation of the mesocosm hall is controlled by the CO2 content in the room, allowing for natural controls in experiments where the CO2 content in the water is altered. +The outdoor facility is available during summer. It consists of 4 large pools, each carrying 6 cubic mesocosms of 1 m3. The temperature is kept the same as in the water intake by using high rates of water flow through in the pools. Experimental designs can be supported by long-term ecological research time series of variables stored in an easily accessible database on the internet. About 70 international researchers have used the mesocosm facility during numerous experiments conducted over the past 10 years. Outcomes include two publications in top-ranked scientific journals regarding methylmercury levels in coastal environments. +","Indoor: Temperature (-1o up to 30oC), stratification depth and strength, convective stirring in different levels, size fractionation of organisms in intake water (300 – 1 µm), light intensity and regime, adjustable water exchange, chemical parameters. +Outdoor: size fractionation of organisms in intake water (300 – 1 µm), chemical parameters. +","Land-sea interactions, climate change, and impact of environmental pollution on organism stoichiometry and health, taxonomic composition, predator-prey interactions, food web processes and efficiency. +"," + + + + + 63.5678349,19.8206221 + +",,"Mercury biogeochemistry, Impact of dissolved organic carbon on plankton respiration, growth and food web function, Fish population models and migratory behaviour. +","Two Seaguard CTD equipped with PAR, conductivity, temperature, turbidity, Chlorophyll, Oxygen, CDOM and pressure sensors. Spectrophotometer, spectrofluorometer, scintillation counter, and basic laboratory equipment including salinity and pH meters. +http://www.umf.umu.se/english/field-station/chemical-analyses/ +","Our hostel is situated a few hundred meters from the field station. Ten rooms with two beds each are available as well as a large kitchen with fridges, freezer and cooking facilities. Additional accommodation and restaurants are also available in nearby Hörnefors. +http://www.umf.umu.se/english/field-station/accommodation/ +http://www.umf.umu.se/english/field-station/biological-analyses/ +","http://www.umf.umu.se/english/?languageId=1 +http://www.umf.umu.se/english/field-station/the-mesocosm-facility/ +"," + + + +Indoor polyethylen mesocosms + + + + +Tanks with light and temperature control + + + + + + + + + + + + +Ice covered mesocosms at floor 2; Photo: M. Nordin +  +  + + + + + + + + + + + + + + + + + + +MF-UMSC indoor at floor 1; Photo: M. Nordin +MF-UMSC outdoor; Photo: K. Viklund + + + +  +","['http://mesocosm.org/wp-content/uploads/2017/03/Indoor-polyethylen-mesocosms.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/Tanks-with-light-and-temperature-control.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/ice-tanks_1-300x199.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/DSC_1798-300x199.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/DSC_1801-300x199.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/INDOOR-300x199.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/OUTDOOR-300x199.jpg']",,,,"['63.5678349', '19.8206221']","{'coordinates': ['63.5678349', '19.8206221']}" +https://mesocosm.org/mesocosm/alpstream-eco-hydraulic-flumes/,ALPSTREAM ECO-HYDRAULIC FLUMES,ALPSTREAM – Alpine Stream Research Center/MONVISO PARK,Italy,Europe,"Frazione S. Antonio 17, +I-12030 Sant’Antonio Ostana (CN) +  +Or: +  +DBIOS – University of Turin, +Via Accademia Albertina, 13, +10123 Torino (Italy) +","Stefano Fenoglio +Please login or request access to view contact information. +Please login or request access to view contact information. +  +Francesca Bona +Please login or request access to view contact information.francesca.bona@unito.itPlease login or request access to view contact information. +",2023 - present,"The flumes system is fed with water coming directly from the Po river. By exploiting a natural pool and using a small barrier to regulate the water stage, water is made to flow into a pipeline connected to the flumes. The pipeline intake (diameter is 0.80 m) is placed close to the pool bottom; a metallic net protects the intake from coarse debris load, preventing the occlusion of the pipeline. Moreover, the rate of incoming water from the river can be regulated thanks to the presence of a sluice gate in front of the intake. +A 155 m long pipeline conveys flow from the intake to a loading tank, that acts as a dissipation reservoir and slows down the incoming flow. This main tank is connected to other three loading sub-tanks by means of three sluice gates, that can be completely opened (during the experiments), closed (for maintenance and cleaning) or partially closed (to regulate the flume flows). Each sub-tank feeds two channels, for a total of six flumes. Each flume is 25m long, 0.30m wide, 0.30m high and rectilinear. Each channel is made of a series of sub-channel units, connected together by screws. Some of these units have a widening (0.90m width) in the longitudinal direction which can be put in communication (by two sluice gates) with the main channel 0.3 m wide. In this way, these units can be used to simulate a pool habitat. Each flume bed is filled with natural substrate (i.e. boulders, cobbles and gravel) in a proportion which simulates the natural conditions characterizing the Po river in this stretch. Each couple of channels drain into a terminal tank. In total, three terminal tanks are connected together and convey water into a unique concrete shaft, connected to a pipeline that returns water to the river. If necessary, in two flumes  water can re-circulate by means of a pump which returns water into the upstream  sub-tank. Thus, these two channels can act as a closed-system.  +"," +Flow velocity +water levels and amount can be regulated just acting directly on the facility structure. +Other environmental or chemical parameters can be changed depending on the experiment (temperature, suspended solid sediment amount, light, nutrients or pollutants) + +"," +Stream ecology +primary instream production +allochthonous input degradation +diatom biology and diversity +aquatic macroinvertebrates biology and diversity +aquatic entomology +Alpine fish biology +climate change (experimental droughts and floods) +hydromorphological impact (total suspended solids amount, changes in substrate composition..) +stream eco-hydraulics and eco-hydrology +flow field features  in the near-bed zone and its impact on macrobenthos +hyporheic flows +pollutant transports +stream-hyporheic zone interactions + +"," + + + + + 44.6931944, 7.176777777777778 + +","Manipulative experiments will be carried out in order to analyze changes in benthic communities (i.e. diatoms and macroinvertebrate), induced by environmental and/or chemical impacts. Concerning primary producers, we are interested in analyzing possible changes in benthic chlorophyll a of the main autotrophic organisms colonizing periphyton (namely diatoms, cyanobacteria and green algae) and their proportions. Diatoms will also be analyzed at community level, focusing on both taxonomic and functional composition. +Macroinvertebrates will be analyzed at community level, focusing on taxonomic and functional composition. Main interests are related to eco-hydraulic impacts on benthic communities, especially in the frame of the current climatic scenario. We are also planning to perform life-cycle studies focused on selected aquatic insect taxa. +The flumes can be also utilized to perform ecological, behavioral and life-cycle studies concerning selected rheophilous and orophilous fish (such as Bullheads, Minnows et al.) +Flumes will be used to study the role of fluid dynamical characteristics of streams on benthic communities. From the basic features (e.g., water stage and bulk velocity) to more refined ones, like flow field and detachment zones close to sediments surface or the presence of bedforms (dunes, antidunes, ripples) and single obstacles. Moreover, the hydrodynamic impact of (totally or partially submerged) vegetation can be studied, as well as the influence of unsteady flows and surface waves. +"," +Ecology +Zoology +Phycology +Eco-hydraulics + +"," +Temperature dataloggers (water temperature registration) +multiparametric probe (measuring water pH, Dissolved oxygen, conductivity) +water flow meter +field spectrophotometer +fluorometric probe (Benthotorch, for benthic chlorophyll a measurement) +sampling devices for benthic communities + +","Facilities available in Ostana (1.5 km): guest house, hotels, B&B +","https://www.parcomonviso.eu/alpstream +","Flumes, photo credits: Francesca Bona +Aerial view flumes, photo credits: Anna Marino +from window of the ALPSTREAM lab, photo credits: Elisa Falasco +Guesthouse, photo credits: VisoaViso cooperative +Indoor space of the ALPSTREAM lab, photo credit: Stefano Fenoglio +Ostana landscape, photo credits: Stefano Fenoglio +","['http://mesocosm.org/wp-content/uploads/2023/03/Flumes-1024x413.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/aerial-view-flumes-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/from-the-window-of-the-ALPSTREAM-lab.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/guesthouse.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/indoor-space-of-the-ALPSTREAM-lab.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/Ostana-landscape.1.9MB-1024x768.jpg']",,,,"['44.6931944', ' 7.176777777777778']","{'coordinates': ['44.6931944', '7.176777777777778']}" +https://mesocosm.org/mesocosm/yeosu-mesocosm-system/,Yeosu Mesocosm System,"Fisheries Science Institute, Chonnam National University",Republic of Korea,Asia,"50 Daehak-ro, Yeosu, Jeonnam 59626, Republic of Korea +","Prof. Ihn-Sil Kwak / Dr. Hyunbin Jo +Please login or request access to view contact information. +",,"in and outdoor – marine and fresh +The facility consists of a floating raft, nine impermeable enclosures with transparent caps (2,015 m^2) +","temperature, pH, nutrients, light levels +","Global warming, functional trait +"," + + + + + 34.627472,127.72033 + +"," +the effects of warming on fish health and growth +the interaction between phytoplankton and fish + +","Fisheries +","YSI multi-parameter probe +",,"http://jnufsi.jnu.ac.kr/user/indexMain.action?handle=1&siteId=jnufsi +"," + + + + + + + + + +Reconstruction plan + + + + +","['http://mesocosm.org/wp-content/uploads/2019/03/Yeosu-Mesocosm-System-1-300x226.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Yeosu-Mesocosm-System-2-300x227.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Yeosu-Mesocosm-System-3-255x300.jpeg']",,,,"['34.627472', '127.72033']","{'coordinates': ['34.627472', '127.72033']}" +https://mesocosm.org/mesocosm/levend-lab/,Levend Lab,Leiden University,Netherlands,Europe,"Leiden University +Institute of Environmental Sciences +PO Box 9518 +2300 RA +Leiden +","Martina G. Vijver +Maarten Schrama +Peter van Bodegom +  +Vijver@cml.leidenuniv.nl +m.j.j.schrama@cml.leidenuniv.nl +p.m.van.bodegom@cml.leidenuniv.nl +",2016 - present," +48 x mesocosms 65 L, +38 x experimental ditches of 10 meter lenght, 30 cm depth and 60 cm width with grassland bufferzones around the ditches. The ditches are connected to open water but can also be closed. +36 x terrestrial mesocosms, surrounding with plants for terrestrial testing, +2 lab units + +",,"Ecological and ecotoxicological research +"," + + + + + 52.170726, 4.451855 + +","Impact of chemicals on community level impacts +"," +Aquatic and terrestrial communities +Cross-ecosystems + +"," +Basic lab equipment is available +more advanced lab equipment is available at the university (10 minutes biking distance) + +","Lodging can be organised in private accomodations in Leiden (walking distance) +","https://levendlab.com/ +  +Related Publications: +https://doi.org/10.3389/fenvs.2017.00075 +https://doi.org/10.1016/j.scitotenv.2018.03.021 +https://doi.org/10.1002/etc.4142 +  +"," + + + +Photo credit: + + + + +Photo credit: + + + + +","['http://mesocosm.org/wp-content/uploads/2018/10/1-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/2-1024x768.jpg']",,,,"['52.170726', ' 4.451855']","{'coordinates': ['52.170726', '4.451855']}" +https://mesocosm.org/mesocosm/lake-baoan-field-station-of-experimental-limnological-research/,Lake Bao’an Field Station of Experimental Limnological Research,"State Key Laboratory of Freshwater Ecology and Biotechnology, Institute of Hydrobiology, Chinese Academy of Sciences",China,Asia,"No. 7 South Donghu Road,  Wuchang District, Wuhan 430072, Hubei Province, China +","Hai-Jun Wang +Please login or request access to view contact information. +",10 years,"33 experimental ponds (40,000 m2), 30 cement aquarium (1 m×1 m ×1 m each),a laboratory building with 6 labs (660 m2), a meteorological station, etc. +","Total nitrogen (TN), total phosphorus (TP), and underwater light condition +","The effects of high nitrogen on aquatic organisms and sediment phosphorus release; the effects of light condition on development of submersed macrophytes; Effect of nutrient loading on water quality and phytoplankton; factors affecting greenhouse gas emissions in fish ponds +"," + + + + + 30.28805,114.72916 + +","Effect of nutrient loading, factors influencing submersed macrophytes, ecological restoration, eutrophication mitigation,  greenhouse gas  emission, internal phosphorus release, ecotoxicology and risk assessments, nitrogen pollution +","The effects of high nitrogen on aquatic organisms and sediment phosphorus release; the growing condition for submersed macrophytes etc. +","YSI ProPlus (Yellow Spring Inc., USA), spectrophotometer, illuminance meter (KONICA MINOLTA, T-10, China), unmanned aerial vehicle (DJI, Phantom 3, China), Daphnia Toximeter (bbe moldaenke cn, Germany), sampling equipment of water, pore water, sediment, macrophytes, zoobenthos, plankton, etc. +","An apartment with 8 rooms and 1 yard (800 m2) +","Peer-reviewed publication in recent 5 years + +Yu et al., 2015. Effects of high nitrogen concentrations on the growth of submersed macrophytes at moderate phosphorus concentrations. Water Research, 83: 385-395. +Wang et al., 2017. Can short-term, small experiments reflect nutrient limitation on phytoplankton in natural lakes? Chinese Journal of Oceanology and Limnology, 35: 546-556. +Li et al., 2017. Total phytoplankton abundance is determined by phosphorus input: Evidence from an 18-month fertilization experiment in 4 subtropical ponds. Canadian Journal of Fisheries & Aquatic Sciences, 74 (9): 1454-1461. +Wang et al., 2017. Effects of high ammonia concentrations on three cyprinid fish: acute and whole-ecosystem chronic tests. Science of the Total Environment, 598: 900-909. +Yu et al., 2017. Does the responses of Vallisneria natans (Lour.) Hara to high nitrogen loading differ between the summer high-growth season and the low-growth season? Science of the Total Environment, 601-602: 1513-1521. +Yu et al., 2018. Higher tolerance of canopy-forming Potamogeton crispus than rosette-forming Vallisneria natans to high nitrogen concentration as evidenced from experiments in 10 ponds with contrasting nitrogen levels. Frontiers in Plant Science, 9. +Ma et al., 2018. High ammonium loading can increase alkaline phosphatase activity and promote sediment phosphorus release: a two-month mesocosm experiment. Water Research, 145: 388-397. +Yu et al., 2018. Reply to Cao et al.’s comment on “Does the responses of Vallisneria natans (Lour.) Hara to high nitrogen loading differ between the summer high-growth season and the low-growth season? Science of the Total Environment 601-602 (2018) 1513-1521. + +"," + + + +The aerial view of the experimental station + + + + +cement aquarium experimental system + + + + +Ponds for eutrophication experiments + + + + +Ponds for nitrogen pollution experiments + + + + +","['http://mesocosm.org/wp-content/uploads/2019/03/The-aerial-view-of-the-experimental-station-300x169.png', 'http://mesocosm.org/wp-content/uploads/2019/03/cement-aquarium-experimental-system-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Ponds-for-eutrophication-experiments-300x177.png', 'http://mesocosm.org/wp-content/uploads/2019/03/Ponds-for-nitrogen-pollution-experiments-300x189.png']",,,,"['30.28805', '114.72916']","{'coordinates': ['30.28805', '114.72916']}" +https://mesocosm.org/mesocosm/tihany-outdoor-mesocosm-hungary/,Tihany Outdoor Mesocosm (Hungary),"Balaton Limnological Research Institute, Eötvös Loránd Research Network",Hungary,Europe,"Klebelsberg Kuno 3, +8237-Tihany, +Hungary +","Gergely Boros +  +Please login or request access to view contact information. +",starting in 2019,"The outdoor mesocosm facility consists of 12 outdoor cylindrical plastic tanks; each has a volume of 5 cubic meters and water depth of about 1.5 m. The sensors deployed in the mesocosms gauge the following parameters: dissolved oxygen, oxygen saturation, water temperature, pH, redox potential, conductivity, TDS, light irradiation. The tanks can be filled either with tap water, or with water from Lake Balaton filtered in three phases (gravel, – sand, – and UV filters). +"," +water temperature (electric heating cables are planted in each mesocosms) +light irradiation (at the top of each mesocosms there is has a LED lamp emitting a light spectrum similar to sunlight) +speed of water circulation (an airlift mixing system circulates the water in the mesocosms with adjustable carrying capacity) +nutrients in the water column +heating and additional light irradiation are controlled by a programmable logic controller (PLC) system + +"," +ecological stoichiometry; +effects of temperature (climate change) and nutrient load (eutrophication) + +"," + + + + + 46.9125, 17.893333333333334 + +"," +community ecology + +"," +freshwater ecology +environmental sciences + +"," +The mesocosm facility with its 12 tanks and the linked infrastructure; +well-equipped labs (for water quality analyses, stable isotope analyses, etc.) at the research institute; +indoor facilities for breeding and maintaining plants and animals for experiments; +offices for guest researchers + +","The Balaton Limnological Institute provides accommodation in its guesthouse (http://www.blki.hu/vendeghaz/index_en.html). +",," + + + +Foto credit: Ferenc Jordan + + + +  +Foto credit: Ferenc Jordan + + + + +Foto credit: Ferenc Jordan + + + + +​ +  +","['http://mesocosm.org/wp-content/uploads/2018/11/Tihany-5-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/IMG_20181024_094852-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/IMG_20181024_104918-1024x768.jpg']",,,,"['46.9125', ' 17.893333333333334']","{'coordinates': ['46.9125', '17.893333333333334']}" +https://mesocosm.org/mesocosm/sites-aquanet-svartberget-research-station/,SITES AquaNet – Svartberget Research Station,SITES and Swedish University of Agricultural Sciences,Sweden,Europe,"Sveriges lantbruksuniversitet (SLU) +Unit for Field-based Forest Research +Svartberget Research Station +SE-922 91 Vindeln +Sweden. +","Tomas Lundmark +Please login or request access to view contact information. +",2017 - present," +Open access to national and international researchers. +Outdoor, freshwater, deployed in an adaptable jetfloat, placed in lake Stortjärn, 2,5 km from the research station. +PE-film enclosures or 20 hardshell PE enclosures (ø = 0.9 m, depth = 1.5 m, volume = 700 l) + +",,"Advanced general understanding in ecology by using modularized experiments across SITES-AquaNet stations (Sweden) or potential collaborators (Sweden, Europe and other continents). Topics: Forest stand development, plant physiology, systemic water transport, forest management strategies, nutrient limitation, biodiversity-functioning-stability relationships, community ecology, biogeochemistry, atmospheric flux, global change research. On-site climate data, incl. temperature profile measurements. +"," + + + + + 64.143965, 19.455836 + +",,,"Apogee SQ-500 (PAR), CTG Trilux fluorometer (chlorophyll-a, phycocyanin and turbidity) and Aanderaa 4531 optode (O2 and temperature) sensors fulltime deployed in each enclosure, deployed with a Campbell CR1000 datalogger and an AM16/32B multiplexer (https://www.campbellsci.com). The datalogger has an ethernet interface for remote access through a mobile broadband router, for maintenance and data retrieval. Surveillance camera mounted for remote monitoring of the site. +An AP-2000 AquaRead Multiprobe (http://www.aquaread.com/portofolio/ap-2000/) equipped with a chlorophyll sensor, and an Apogee MQ-500 (PAR) sensor with handheld meters. +Laboratory for filtering and extraction of samples for a wide range of analyses, cold storage and freezing rooms are available at the research station. Connection to laboratories for analysis at the SLU Stable Isotope Laboratory (http://www.slu.se/ssil/), the Erken Laboratory (http://www.ieg.uu.se/erken-laboratory) and Umeå University. +","Accommodations at the field station itself are currently under construction. Rooms for rent at Hotel Forsen (6.3 kilometers from the station) and Hotel Vindelngallergian (7.6 kilometers from the station). +","SITES (AquaNet, Water and Spectral initiatives, http://www.fieldsites.se) +ICOS (http://www.icos-sweden.se). +"," + + + +Photo credit: Peder Blomkvist + + + + +Photo credti: Peder Blomkvist + + + + +  +","['http://mesocosm.org/wp-content/uploads/2018/05/Svartberget_2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Svartberget_3-768x1024.jpg']",,,,"['64.143965', ' 19.455836']","{'coordinates': ['64.143965', '19.455836']}" +https://mesocosm.org/mesocosm/cambridge-environmental-assessments-cea/,Cambridge Environmental Assessments (CEA),RSK ADAS Ltd,United Kingdom,Europe,"Cambridge Environmental Assessments, ADAS Boxworth, Cambridgeshire, CB23 4NN +","Dr Nadine Taylor +Please login or request access to view contact information. +",2009 to present.,"Outdoor freshwater static mesocosm systems. +We have 99 flat bottomed and 100 unique sloped mesocosms which are designed to simulate edge of field environments. Our sloped mesocosms were installed in 2013, are 2.6 m long, 1 m wide and 0.7 m deep and are used for herbicide studies. The sloped mesocosms are designed to enable the incorporation of a wide variety of plant species, providing a habitat which mimics the plant community found in edge of field environments. Our flat bottomed mesocosms were installed in 2009, are 1.8 m long, 0.9 m wide and 0.8 m deep and are predominantly used in pesticide studies. +Indoor laboratories. +We have a GLP laboratory facility in which we can carry out higher tier chronic testing on multiple and single species under controlled conditions. +"," +Outdoor mesocosms: Plant community, water depth, test item present, initial organism establishment +Indoor laboratories: Environmental parameters (including temperature, pH,  oxygen and light/dark cycles), species present, sediment/substrates, feeding regimes + +","At CEA we produce robust population and community endpoints (ETO RAC and ERO RAC) that meet the requirements of the EFSA (2013) aquatic guidance. We conduct mesocosm studies on both herbicide and pesticide products and can carry out the application of our test item in several ways (e.g. mix-in, spray-over) and perform single or multiple applications as required. +"," + + + + + 52.252916,-0.031916 + +","Chemical risk assessment, primarily determining regulatory endpoints for various agrochemicals +"," +Higher tier freshwater aquatic testing to Good Laboratory Practice (GLP) standards. +Bespoke experimental design +Identification of freshwater phytoplankton, periphyton, macrophytes, zooplankton, macroinvertebrates and emergent insects +Statistical analysis of data generated to current guideline requirements + +"," +Indoor laboratories for acute and chronic higher tier testing +Probes for monitoring temperature, pH, conductivity, dissolved oxygen and turbidity +Sampling equipment to collect zooplankton and phytoplankton +Periphytometers to allow the periphyton community to be sampled quantitatively +Emergent insect traps +Sediment sampling apparatus +Depth integrated water samplers (DIWS) +High accuracy scales for formulation of test item +Bioassay cages and bags to house organisms within our mesocosms +GLP storage facilities + +","Local hotels available near to the site. +","http://www.cea.adas.co.uk/Services/Ecotoxicology-and-risk-assessment +"," + + + +Established flat bottomed mesocosms (Credit: Cambridge Environmental Assessments) + + + + +Established sloped mesocosms (Credit: Cambridge Environmental Assessments) + + + + +Established sloped mesocosms (Credit: Cambridge Environmental Assessments) + + + + +Set-up of sloped mesocosms prior to a study (Credit: Cambridge Environmental Assessments) + + + + +","['http://mesocosm.org/wp-content/uploads/2019/03/Established-flat-bottomed-mesocosms-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Established-sloped-mesocosms-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Established-sloped-mesocosms-2-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Set-up-of-sloped-mesocosms-prior-to-a-study-300x225.jpg']",,,,"['52.252916', '-0.031916']","{'coordinates': ['52.252916', '-0.031916']}" +https://mesocosm.org/mesocosm/carl-von-ossietzky-university-oldenburg/,Planktotrons - Indoor Mesocosm Facility,Carl-von-Ossietzky University Oldenburg,Germany,Europe,"Carl-von-Ossietzky University Oldenburg +Institute for Chemistry and Biology of the Marine Environment (ICBM) +Schleusenstr. 1 +26382 Wilhelmshaven +Germany +","Prof. Dr. Helmut Hillebrand +Dr. Maren Striebel +Please login or request access to view contact information. +",started in 2014,"indoor (outdoor) – freshwater/marin – pelagic/benthic +12 indoor mesocosms with 600 l volume (height 120 cm, diameter 80 cm) for marine or freshwater experiments and natural or artificial communities +3 temperature zones: upper half, lower half, and bottom +Build-in rotor prevents wall growth +Six ports at different levels of the water column for direct sampling +Planktotrons can be connected for metacommunity approaches +Sediment inclusion possible +","Temperature: from 5-25°C for constant temperature (higher for heat wave simulations) +Light: LED-lights simulate daylight with different intensities +","Phytoplankton, ciliates, zooplankton, food web, biodiversity, metacommunities +"," + + + + + 53.5151,8.146219999999971 + +",,,"Temperature monitoring system, wet labs, climate chambers, chemical and biological analysis +","Dormitory with different rooms for up to 30 sleeping guests, kitchen facilities, auditorium that holds up to ca. 50 persons +","www.planktotrons.de + +www.icbm.de +"," + + + + + + + +Plankrtotrons in Wilhelmshaven + + + + +","['http://mesocosm.org/wp-content/uploads/2017/05/planktotrons_1_400.png', 'http://mesocosm.org/wp-content/uploads/2017/05/Planktotrons_2_400.png']",,,,"['53.5151', '8.146219999999971']","{'coordinates': ['53.5151', '8.146219999999971']}" +https://mesocosm.org/mesocosm/kiel-indoor-benthokosmen-zur-simulation-von-umweltfluktuationen/,Kiel-Indoor-Benthocosms (KIBs),GEOMAR-Helmholtz Center for Ocean Research Kiel,Germany,Europe,"GEOMAR-Helmholtz Center for Ocean Research Kiel +West shore campusDüsternbrooker Weg 20D-24105 Kiel +East shore campusWischhofstr. 1-3D-24148 Kiel +","Dr. Christian Pansch +cpansch(at)geomar.de +",,"Indoor – Pelagic/Benthic – Marine/Brackish +Indoor (air-conditioned rooms) infrastructure consisting of 12 independent 600 liter tanks. Based on a computer controlled system, artificial fluctuations of diverse parameters can be simulated in through-flowing seawater +","temperature, salinity, pH and irradiation (oxygen in progress) +","Variability impacts from: temperature, salinity, pH and irradiation (oxygen in progress) – from single species to communities +"," + + + + + 54.330034, 10.148140 + +",,"fluctuation scearios in flow through systems +","12 independent experimental units (infinite subunits in these tanks), heaters, coolers, automated, heat exchangers, internal circulation, flow through system, programmable climate simulation +",,"http://www.geomar.de/en/ +Media report: Window on future ocean +Pansch, C. and Hiebenthal, C. (2019), A new mesocosm system to study the effects of environmental variability on marine species and communities. Limnol Oceanogr Methods, 17: 145-162. https://doi.org/10.1002/lom3.10306  +","  +  + + + + +Photo: Christian Pansch + + +Photo: Christian Pansch + + + + +Drawings: Dar Golomb & Christian Pansch + + + + +Drawings: Dar Golomb & Christian Pansch + + + + +Graphic: Christian Pansch + + + + +  +","['http://mesocosm.org/wp-content/uploads/2018/04/IMG_6896-e1523449384719-200x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2018/04/IMG_6905-e1523449507437-200x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2018/04/A-264x300.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/B-300x181.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/C-300x222.jpg']",,,,"['54.330034', ' 10.148140']","{'coordinates': ['54.330034', '10.148140']}" +https://mesocosm.org/mesocosm/metu-mesocosm-system/,METU Mesocosm System,Middle East Technical University (METU),Turkey,Europe,"Orta Doğu Teknik Üniversitesi (ODTÜ), Middle East Technical University (METU), Üniversiteler Mahallesi, Dumlupınar Bulvarı No:1 06800 Çankaya Ankara/TURKEY, 06800 +","Prof.Dr. Meryem Beklioğlu +","2011, 2012",,"water depth and nutrients (both TP and TN) +","Role of water level on ecosystem processes (e.g. C and  N) as well as impact of food additives (TiO2) on food web structure and ecosystem processes +"," + + + + + 39.8897009,32.7520139 + +","Role of hydrological alteration on ecosystem structure and function of shallow lakes +",,,,"http://limnology.bio.metu.edu.tr +"," +Photo: METU-Limnology Labratory +",['http://mesocosm.org/wp-content/uploads/2017/02/METU-300x204.jpg'],,,,"['39.8897009', '32.7520139']","{'coordinates': ['39.8897009', '32.7520139']}" +https://mesocosm.org/mesocosm/ceint-center-for-the-environmental-implications-of-nanotechnology/,CEINT-Center for the Environmental Implications of Nanotechnology,Duke University,USA,North-America,"Duke University + 134 Chapel Drive + Durham NC 27708 + USA +","Dr. Mark Wiesner +Please login or request access to view contact information. +",2009-present,"outdoor/indoor – pelagic/benthic – freshwater + The CEINT Mesocosm Facility is home to 30 complex simulated wetland ecosystems, mesocosm dimensions are 1 x 4 m with 1 compartment floor and 1 compartment water +","temperature, light, nutrients +","nanomaterial transport, transformation, ecological interactions, biouptake and biological interactions +"," + + + + + 36.0241591,-78.911455 + +",,,,,"http://www.ceint.duke.edu/facilities +"," + + + + +CEINT Mesocosm Facility   + + + + + +CEINT Mesocosm Facility   + + + + +","['http://mesocosm.org/wp-content/uploads/2017/05/Duke_mesocosms.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Duke_mesocosmsBPE.jpg']",,,,"['36.0241591', '-78.911455']","{'coordinates': ['36.0241591', '-78.911455']}" +https://mesocosm.org/mesocosm/lake-mesocosms/,Lake Mesocosms,Ludwig-Maximilians-University (LMU) Munich,Germany,Europe,"Ludwig-Maximilians-University (LMU) Munich + Department Biology II + Aquatic Ecology + Grosshaderner Str.2 + Germany +","Prof. Herwig Stibor + Dr. Maria Stockenreiter +Please login or request access to view contact information. +",1997 - present,"outdoor in lake – pelagic – freshwater + Up to 60 mesocosms (1 m diameter 0.5-15 m long) attached to raft or floating ring in the lake +","Temperature, light, nutrients, species composition, mixing, stratification depth +","Plankton ecology, climate change scenarios, stoichiometry, predator-prey systems, resource competition, biodiversity und community assembly +"," + + + + + 47.9745129,12.46009749999996 + +",,,"Field station with C-mat,  CN analyser, Dionex, wet lab, microscopes, nutrient analyses, Multispectral PAM, 8-LED-based Algal Lab Analyzer, Spectroradiometer, climate chamber + access to lake in protected area +","small kitchen, seminar room +","http://www.aquatic-ecology.bio.lmu.de/fieldstation/index.html +"," + + + + +Mesocosm installation with raft and floating rings in Lake Brunnsee (Photo: Stibor) + + + + + +Mesocosm installation – view of the bags under water (Photo: Stibor) + + + + +","['http://mesocosm.org/wp-content/uploads/2017/05/Seeon_1_400px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Seeon_2_400px.jpg']",,,,"['47.9745129', '12.46009749999996']","{'coordinates': ['47.9745129', '12.46009749999996']}" +https://mesocosm.org/mesocosm/mesodrome/,University of Antwerp MESODROME,University of Antwerp,Belgium,Europe,"University of Antwerp, Dep. Biology +Universiteitsplein 1 +2610 Wilrijk +Belgium +","Ronny Blust +Ronny.blust@uantwerpen.be +","Module I fully functional, Module II (Drie Eiken Flume) epected in 2019","The mesocosm facility at Drie Eiken (figure 1) consists of two modules. Module I holds 16 cylindrical ponds 2 m wide on 1.2 m deep (water depth), module II is equipped with 4 oblong raceways, each 2 x 5 m long (the water circulates around a mid-section) and 80 cm deep (water depth). The raceways are temperature controlled and allow accurate flow control. They are equipped with windows for easy monitoring of organismal behavior and/or plant stature. Module II also houses the larger flume facility (black box in figure 2, see also § 3.2 Flume facility Drie Eiken). Additionally module II holds aquaculture infrastructure for fish stocking. Both modules are integrated in a 1000 m² greenhouse. In module I the roof can be completely opened as to expose the ponds to the elements, whenever necessary in the experimental setup, module II has a classical greenhouse setup. The latter module also integrates a small wet lab facility for basic lab work, e.g. dissections, determinations, microscopy, weighing, etc. +","Water quality & depth +Pollution concentration (water & sediment) +Flow and temperature in river systems +"," +Stress related changes in ecosystems at multiple levels of biological organization. +Bioavailability and effects of sediment-bound pollutants +The toxicity of mixtures on aquatic communities +Interactions between pollutant and predator stress in aquatic food chains +Validation of transcriptomics and proteomics derived biomarkers +Long term studies on global change related issues +Feeding and continuous exercise in fish physiology + +Biological-geomorphological interactions in tidal wetlands +"," + + + + + 51.155424, 4.409210 + +",,,"All facilities are equipped with all necessary (remote) sensors and loggers, e.g. flux meters, dissolved oxygen, temperature, turbidity, pH, conductivity, … The greenhouse itself has full climate monitoring and (limited) temperature control during winter time. The dimensions and structure of the greenhouse allow for future extension of the aquatic infrastructure including compartmentalization of the housing for full climate control (including atmosphere). The complete system is supported by a water treatment facility to allow environmental friendly effluent control and disposal. +","Nearby in private accommodation +","www.uantwerpen.be/sphere.be +www.uantwerpen.be/ecobe +"," + + + +Credit: Eric Struyf + + + + +",['http://mesocosm.org/wp-content/uploads/2018/05/Mesodrome_tech-drawing-300x115.jpg'],,,,"['51.155424', ' 4.409210']","{'coordinates': ['51.155424', '4.409210']}" +https://mesocosm.org/mesocosm/estacion-de-ciencias-marinas-de-toralla-ecimat/,Estación de Ciencias Mariñas de Toralla (ECIMAT),University of Vigo,Spain,Europe,"Illa de Toralla +E-36331 Coruxo +Vigo +Galicia (Spain) +","Antonio Villanueva (Manager at ECIMAT) +Jose González +  +antonio.villanueva@ecimat.org +josegonzalez@uvigo.es +","discontinuous experimentation in mesocosms for more than 10 years, although facilities were totally renovated in 2015"," +Floating platform with 6 floating rings for bags with 1.2 m diameter. +Land-based system with pelagic/benthic experimentation tanks. + +","Temperature, light, nutrients, species composition +","Marine Ecology and Ecotoxicology, Aquaculture, Physical Oceanography and Marine Geology +"," + + + + + 42.201979, -8.798505 + +",,,"Toralla Marine Science Station provides the following support services to marine researchers: + +Supply of Marine Organisms, Water and Culture media +Use of Laboratories, Scientific Equipment and other Infrastructures +Sample Processing and Analysis +Support Services to Research Activities at Sea (Boats, Sampling Support, Diving Jobs, Diving equipment, etc.) +Other Support Services to Research (Development of Experimental Cultures, Technical Advising on Marine Organisms Experimentation, etc.) +Real-time monitoring of oceanographic and meteorological variables + +","various size apartments available +","http://www.ecimat.org +","Photo credit: Alba Hernández + + + +  + + + +Photo credits: Alba Hernández + + + + +Photo credits: Jose Gonzalez Fernandez + + + + +  +","['http://mesocosm.org/wp-content/uploads/2018/04/5B25D5A7-B59A-480E-93EF-F72F6D49B420-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/FCDD4CA6-6509-4CFE-BE24-51C6D14BCC65-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/897C6409-336F-4357-9831-3D0F71827349-1024x768.jpg']",,,,"['42.201979', ' -8.798505']","{'coordinates': ['42.201979', '-8.798505']}" +https://mesocosm.org/mesocosm/smart-ecolake/,Smart Ecolake,"Nanjing Institute of Geography and Limnology, Chinese Academy of Sciences (NIGLAS)",China,Asia,"73 East Beijing Road, +Nanjing 210008, +P.R.China +","Dr. Jianming Deng +Please login or request access to view contact information. +",2023 - present," +72 tank totally, (potentially to be extended in the future) with 2.3 meters diameter +Sediment 40cm, depth of water 1.3 meters, while the tanks are 1.8 meters deep. (volume of ca. 5.4 m3) +Smart Ecolake located in Suzhou, Jiangsu China, just near Lake Taihu, 1.4meters located underground) +The facility is permanently staffed with four scientists and two technicians. Additionally ca. 10 students are working there. + +"," +Temperature +Disturbance (caused by wind) +Nutrient levels (both, TN and TP) + +","The processes and mechanisms of shallow lakes responding to global changes and the feedbacks +"," + + + + + 31.03,120.42 + +"," +Circulation and fate of biogenic elements in lakes among different habitats under global change (Physical Limnology) +Paths and mechanisms of the impact of global change on the structure, process and function of lake ecosystems (Biology) +Spatio-temporal differences and driving factors of greenhouse gas emission fluxes in lakes with different habitats (Geochemnistry) + +","Global change limnology +"," +Temperature sensors +water level sensors +water flow meters +electric heating system +automation for e.g. nutrient and water supplementation + +",,"www.ecolake.net +","EcoSmart mesocosm facility  whole view, photo credits: Jianming Deng +Mesocosm close up, photo credit: Jianming Deng +","['http://mesocosm.org/wp-content/uploads/2023/12/Whole-View_1.9MB-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/single-tank-1024x683.jpg']",,,,"['31.03', '120.42']","{'coordinates': ['31.03', '120.42']}" +https://mesocosm.org/mesocosm/imdea-water-institute/,IMDEA Water Institute,IMDEA Water Foundation,Spain,Europe,"IMDEA Water Institute +Avenida Punto Com 2 +PO Box 28805, Alcala de Henares +Madrid (Spain) +","Andreu Rico:  andreu.rico@imdea.org +Marco Vighi:  marco.vighi@imdea.org +",2016-present,"The mesocosm facility at the IMDEA Water Institute (Central Spain) consists of 9 independent stream channels (9 m length, 0.3 m depth; 0.3 m width), 24 lotic systems containing about 1 m3 of water and sediment, and a biodiversity lagoon of about 30 m3 equipped with a green filter. The mesocosm facility allows the design of experiments with several controls and treatments with replication and is perfectly suited to represent scenarios such as those used for the regulatory risk assessment of chemicals in Europe. +"," +Water physico-chemical parameters (DO, T, pH, EC, Alkalinity, etc.) +Nutrient concentrations +Chemical exposure concentrations in water and sediment +Biological responses at the population and community level: phytoplankton, macrophytes, zooplankton and macroinvertebrates + +","Environmental fate of chemicals and calculation of degradation rates +Assessment of the adverse effects of chemicals on several biological endpoints and derivation of safe environmental concentrations +Evaluation of the interaction between multiple stressors (chemical and non-chemical) on aquatic ecosystems +"," + + + + + 40.5133474, -3.3386556000000382 + +","We are mainly engaged on academic research projects but also open for collaboration with the regulatory and industry sectors. Please do not hesitate to contact us. +",,"A wide range of measuring and sampling devices are available for the evaluation of chemical and biological endpoints. Our mesocosm facility is located few meters away to our analytical chemistry lab, which is specialized on the analysis of pesticides and pharmaceuticals in environmental matrices +","Can be arranged upon request +","http://water.imdea.org/ +","  + + + + +Photot: Michelle Jansen +  + + +Photo: Andreu Rico +  + + + + +Photo: Andreu Rico + + +Photo: Andreu Rico + + + + +  +","['http://mesocosm.org/wp-content/uploads/2018/04/IMG_2170-300x181.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/20160519_121359-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/20170512_154035_resized-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/IMG-20170512-WA0010-300x169.jpg']",,,,"['40.5133474', ' -3.3386556000000382']","{'coordinates': ['40.5133474', '-3.3386556000000382']}" +https://mesocosm.org/mesocosm/experimental-streams-facility-esf/,Experimental Streams Facility (ESF),ICRA (Catalan Institute for Water Research),Spain,Europe,"ICRA Catalan Institute for Water Research +Carrer Emili Grahit 101 +17003 Girona +Spain +","Vicenç Acuña +Please login or request access to view contact information. +",2012 - present,"The facility has 24 artificial streams, divided into 4 experimental blocks. The dimensions of each stream are 2 m long, 10 cm wide, rectangular section 50 cm2 +"," +Hydraulics (0,01 to 0,1 L/s allowing 2-50 min travel time) +Hydraulics circulation type: recirculating or flow-through +Light cycles and light intensity +Water temperaure values and cycles +Air temperature (from 4-40ºC) +Air humidity +Chlorine concentration +Dissolved oxygen + +","Broadly speaking, research at the ESF deals with ecology or eco-toxicology. In regards to ecology, we are mainly interested in the effects of flow intermittency and temperature, whereas the main ecotoxicological topics are multi-stressor effects. In this direction, we often work with emerging contaminants effects, bioaccumulation, biodegradation, and biomagnification. +"," + + + + + 41.967303, 2.840650 + +","Ecological research: + +What’s the relationship between intermittency temporal extent on stream ecosystem processes? +Will warmer nights cause a shift towards heterotrophy? +How relevant are heatwaves in shaping stream communities? +Does intermittency influence the length of trophic invertebrate chains? + +Ecotoxicological research: + +What’s the interaction between physical stressors such as water stress during droughts and chemical stress by pharmaceuticals? +Does biodegradation of pharmaceuticals depend on temperature? +Is bioaccumulation of pharmaceuticals in biofilms and inverts depend solely on exposure? + +","Stream ecology and freshwater ecotoxicology +"," +Climate chamber with temperature and humidity control +Rainwater harvesting, storage and conditioning for experiments +24 experimental stream channels +36 LED lights (Lightech, Girona, Spain) +4 quantum sensors (LI-192SA, LiCOR Inc, Lincoln, USA) +4 cryo-compact circulator (Julabo CF-31, Seelbach, Germany) +12 Temperature data loggers VEMCO Minilog (TR model, AMIRIX Systems Inc, Halifax, NS, Canada) +4 peristaltic pump (IPC pump, Ismatec,Switzerland) + +","in private accommodation in the vicinity +","http://www.icra.cat/seccio.php?id=5&lang=3 +"," + + + +Photo credit: Vicenç Acuña + + + + +Photo credit: Vicenç Acuña + + + + +  +","['http://mesocosm.org/wp-content/uploads/2018/05/image003.jpg@01D3EBA2.451771B0.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/image002.jpg@01D3EBA2.451771B0.jpg']",,,,"['41.967303', ' 2.840650']","{'coordinates': ['41.967303', '2.840650']}" +https://mesocosm.org/mesocosm/aquatron-laboratory/,Aquatron Laboratory,Dalhousie University Life Sciences Centre,Canada,North-America,"Dalhousie University Life Sciences Centre + 1355 Oxford Street + PO BOX 15000 + Halifax, Nova Scotia + Canada, B3H 4R2 +","John Batt +Please login or request access to view contact information. +",,"indoor – pelagic – marine/freshwater + The Aquatron is well suited to accommodate almost any lab-based aquatic experiment. It boasts six large tanks holding a combined volume of over 2,000 m3, as well as a wide variety of smaller tanks, research spaces and equipment. + Pool Tank: + Diameter: 15.24 m + Depth: 3.54 m perimeter to 3.91 m center (11’7½” to 12’10”) + Volume: 684,050 litres (150, 477 gallons) + The tank is made from reinforced concrete, with a glass reinforced polyester liner sealed with an epoxy coating. The tank itself sits atop a concrete tank stand with neoprene blocks sandwiched in between to partially acoustically uncouple the tank. + The main deck is located at the top of the tank allowing access to all points of the tank surface. In addition to the main tank, there is an adjoining satellite tank and three associated rooms. The small isolation pool is connected to the main tank via a tunnel, which is 0.96 m wide, 1.12 m deep and 2.74 m long. The tunnel can be divided with drop gates at either end. + The satellite tank is 1.12 m deep, and approximately 1.8 m in diameter. Of the rooms, the first is a viewing room with a large glass window allowing a complete view of the tank surface. The second room is a large wet lab with flowing seawater and freshwater. The third room is located just above the tank and serves as a base of operations for the tank users. + Twenty-two underwater glass viewing ports, approximately 1m2 in size, are located around the perimeter of the tank. Windows are located at various depths to allow viewing at all levels of the tank. The windows are accessed through a viewing deck located below the main deck. + Tower Tank: + Diameter: 3.66 m (34’4”) + Depth: 10.46 m (12’) + Volume: 117,100 litres (25,750 gallons) + The tank is constructed of reinforced concrete and is lined with a glass reinforced polyester liner sealed with an epoxy coating. The tank is separated from the building via neoprene blocks, which are sandwiched between the tank and the tank stand. + The tank can be divided into three layers of water with each layer having different physical parameters. Water sampling can be performed through the sampling ports arranged throughout the wall of the tank. The tank is also equipped with a series of viewing ports (25 of which are suitable for human observation or for use with video equipment). + The tank is completely insulated with insulated window port covers to minimize sweating and condensation. Without the insulation, water would rain down into the building basement causing flooding. + The Tower Tank spans four floors in the Oceanography Tower of the Life Sciences Building. The top of the tank rises just above the fourth floor with the bottom ending just about even with the first floor. The Tower Tank has three associated lab platforms that function primarily as locations for data collection equipment. These lab platforms are located on the first, third and fourth floor levels. Access to the tank can be through each of the lab platforms. Access to the main drain on the bottom of the tank is through the basement, below the first floor. +","temperature, stratification, light, etc. +","Animal behaviour, ballast water, flood containment, invasive species +"," + + + + + 44.6356125,-63.5944334 + +",,,"These world-class facilities are backed by our mechanical system, which can provide high quality, temperature controlled seawater and freshwater year round, as well as a professional team of both biologists and mechanical operators who are available to run the systems and help researchers. 16 wet labs. +",,"http://www.dal.ca/dept/aquatron.html +http://www.dal.ca/dept/aquatron/facilities/tower_tank.html +http://www.dal.ca/dept/aquatron/facilities/pool_tank.html +"," + + + + +Aquatron Laboratory in Halifax, Nova-Scotia, CA + + + + + + + + + + + +Aquatron laboratory: Pool tank + + + + + +Aquatron Laboratory: Tower tank sysem + + + + + +Aquatron Laboratory: Phytoplankton cultivation + + + + +","['http://mesocosm.org/wp-content/uploads/2017/05/aquatronS.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Aquatron-empty_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/halifax_pool_calltoaction.image_.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/featureslide.image_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron1_400.jpg']",,,,"['44.6356125', '-63.5944334']","{'coordinates': ['44.6356125', '-63.5944334']}" diff --git a/vis/js/components/ContextLine.tsx b/vis/js/components/ContextLine.tsx index 15f873923..c3cac24ea 100644 --- a/vis/js/components/ContextLine.tsx +++ b/vis/js/components/ContextLine.tsx @@ -33,106 +33,105 @@ const defined = (param) => param !== undefined && param !== null; * It has to be a class component because of the popovers (they use 'this'). */ export const ContextLine = (props) => { - const { author, params, localization, hidden, service, showDataSource } = props; - const { popoverContainer, showLanguage } = props; + const { author, params, localization, hidden, service, showDataSource } = + props; + const { popoverContainer, showLanguage } = props; - const { isResearcherDetailsEnabled, isResearcherMetricsEnabled } = props; + const { isResearcherDetailsEnabled, isResearcherMetricsEnabled } = props; - if (hidden) { - return null; - } + if (hidden) { + return null; + } - return ( - - {params.showAuthor && ( - - )} - - - - - {showDataSource && defined(params.dataSource) && ( - + {params.showAuthor && ( + + )} + + + + + {showDataSource && defined(params.dataSource) && ( + + )} + {defined(params.timespan) && ( + + - )} - {defined(params.timespan) && ( - - - - )} - {defined(params.documentTypes) && + )} + {defined(params.documentTypes) && ( + } - {/* was an issue to left "All Languages" as default value in the context if no lang_id in parameters */} - {showLanguage && ( - - )} - {defined(params.paperCount) && ( - - )} - {defined(params.datasetCount) && ( - - )} - {defined(params.funder) && {params.funder}} - {defined(params.projectRuntime) && ( - {params.projectRuntime} - )} - {defined(params.legacySearchLanguage) && ( - {params.legacySearchLanguage} - )} - {defined(params.timestamp) && ( - - )} - + )} + {/* was an issue to left "All Languages" as default value in the context if no lang_id in parameters */} + {showLanguage && ( + - {defined(params.searchLanguage) && ( - {params.searchLanguage} - )} - {isResearcherDetailsEnabled && ( - - )} - {isResearcherMetricsEnabled && ( - - )} - - - ); -} + )} + {defined(params.paperCount) && ( + + )} + {defined(params.datasetCount) && ( + + )} + {defined(params.funder) && {params.funder}} + {defined(params.projectRuntime) && ( + {params.projectRuntime} + )} + {defined(params.legacySearchLanguage) && ( + {params.legacySearchLanguage} + )} + {defined(params.timestamp) && ( + + )} + + {defined(params.searchLanguage) && ( + {params.searchLanguage} + )} + {isResearcherDetailsEnabled && } + {isResearcherMetricsEnabled && } + + + ); +}; const mapStateToProps = (state) => ({ isResearcherDetailsEnabled: state.contextLine.isResearcherDetailsEnabled, diff --git a/vis/js/dataprocessing/managers/DataManager.ts b/vis/js/dataprocessing/managers/DataManager.ts index ca4598444..4df112c0b 100644 --- a/vis/js/dataprocessing/managers/DataManager.ts +++ b/vis/js/dataprocessing/managers/DataManager.ts @@ -54,6 +54,7 @@ class DataManager { } parseData(backendData: any, chartSize: number) { + console.log("Data that was received from the backend: ", backendData); // initialize this.context this.__parseContext(backendData); // initialize this.papers @@ -74,6 +75,8 @@ class DataManager { // initialize this.streams this.__parseStreams(backendData); } + + console.log("Papers after processing: ", this.papers); } __parseContext(backendData: any) { diff --git a/vis/js/default-config.ts b/vis/js/default-config.ts index ee93cfbfc..2327be394 100644 --- a/vis/js/default-config.ts +++ b/vis/js/default-config.ts @@ -228,6 +228,7 @@ var config: Config = { triple_km: "GoTriple", triple_sg: "GoTriple", orcid: "ORCID", + aquanavi: "AQUANAVI", }, localization: localization, From b53b9f8459bf34d21dfe4a23c5cb526b9d55994e Mon Sep 17 00:00:00 2001 From: andrei Date: Thu, 9 Oct 2025 12:41:00 +0200 Subject: [PATCH 054/149] feat: url data usage and test cases in the csv --- .../workers/common/common/aquanavi/mapping.py | 5 +- .../common/aquanavi/mesocosm_data_cleaned.csv | 299 ++++++++++++------ 2 files changed, 202 insertions(+), 102 deletions(-) diff --git a/server/workers/common/common/aquanavi/mapping.py b/server/workers/common/common/aquanavi/mapping.py index df71b91b9..f18e9c408 100644 --- a/server/workers/common/common/aquanavi/mapping.py +++ b/server/workers/common/common/aquanavi/mapping.py @@ -5,7 +5,6 @@ from pathlib import Path CSV_PATH = "common/common/aquanavi/mesocosm_data_cleaned.csv" -MESOCOSM_ORG_LANDING = 'https://mesocosm.org/' DEFAULT_DOCUMENT_TYPE = "physical object" DEFAULT_RESULT_TYPE = ['Other/Unknown material'] REQUIRED_COLUMNS = [ @@ -121,6 +120,7 @@ def map_sample_data(): result = [] for _, row in df.iterrows(): title = str(row["Name"]).strip() if row["Name"] else "" + url = str(row["url"]).strip() if row["url"] else "" image = row["Photos of experiments/installations images"] if row["Photos of experiments/installations images"] else "" subject = str(row["Specialist areas"]).strip() if row["Specialist areas"] else "" abstract = get_abstract(row) @@ -128,7 +128,8 @@ def map_sample_data(): result.append({ "title": title, - "identifier": MESOCOSM_ORG_LANDING, + "identifier": url, + "link": url, "type": DEFAULT_DOCUMENT_TYPE, "resulttype": DEFAULT_RESULT_TYPE, "authors": "", diff --git a/server/workers/common/common/aquanavi/mesocosm_data_cleaned.csv b/server/workers/common/common/aquanavi/mesocosm_data_cleaned.csv index 3976bbc56..893563d2f 100644 --- a/server/workers/common/common/aquanavi/mesocosm_data_cleaned.csv +++ b/server/workers/common/common/aquanavi/mesocosm_data_cleaned.csv @@ -1,4 +1,4 @@ -url,Name,Legal name of organisation,Country,Continent,Organisation address,Primary contact information (PI),Years of Mesocosm Experiments,Description of Facility,Controlled Parameters,Research Topics,Facility location(s),Primary interests,Specialist areas,Equipment,Lodging,Source of Information,Photos of experiments/installations,Photos of experiments/installations images,Equipment images,Lodging images,Manipulations,Facility location(s) split,location_facilities +url,Name,Legal name of organisation,Country,Continent,Organisation address,Primary contact information (PI),Years of Mesocosm Experiments,Description of Facility,Controlled Parameters,Research Topics,Facility location(s),Primary interests,Specialist areas,Equipment,Lodging,Source of Information,Photos of experiments/installations,Photos of experiments/installations images,Equipment images,Lodging images,Manipulations,Facility location(s) split,location_facilities https://mesocosm.org/mesocosm/sites-aquanet-skogaryd-research-station/,SITES AquaNet – Skogaryd Research Station,SITES and Göteborg University,Sweden,Europe,"Göteborg University Inst. for Geosciences Guldhedsgatan 5a @@ -40,7 +40,7 @@ Photo credit: Leif Klemedtsson   -","['http://mesocosm.org/wp-content/uploads/2018/05/Skogaryd_2-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Skogaryd_1-1024x683.jpg']",,,,"['58.3712', ' 12.1613']","{'coordinates': ['58.3712', '12.1613']}" +","['http://mesocosm.org/wp-content/uploads/2018/05/Skogaryd_2-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Skogaryd_1-1024x683.jpg']",,,,"['58.3712', ' 12.1613']","{'coordinates': ['58.3712', '12.1613']}" https://mesocosm.org/mesocosm/university-koblenz-landau/,Landau Stream Mesocosm Facility (LSMF),University Koblenz-Landau,Germany,Europe,"University Koblenz-Landau Fortstraße 7 76829 Landau @@ -89,7 +89,7 @@ Stream mesocosm facility at the Landau Campus -","['http://mesocosm.org/wp-content/uploads/2017/05/Stream-Mesocosms-Landau_400px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Fliessrinnenanlage_400.jpg']",,,,"['49.20269', '8.106179999999995']","{'coordinates': ['49.20269', '8.106179999999995']}" +","['http://mesocosm.org/wp-content/uploads/2017/05/Stream-Mesocosms-Landau_400px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Fliessrinnenanlage_400.jpg']",,,,"['49.20269', '8.106179999999995']","{'coordinates': ['49.20269', '8.106179999999995']}" https://mesocosm.org/mesocosm/sites-aquanet-erken-laboratory/,SITES AquaNet-Erken Laboratory,Uppsala University,Sweden,Europe,"Uppsala University: P.O. Box 256 SE-751 05 Uppsala @@ -134,7 +134,7 @@ Photo credit: Erik Sahlee -","['http://mesocosm.org/wp-content/uploads/2018/05/Erken_2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Erken_1-1024x705.jpg']",,,,"['59.8354205', ' 18.6327766']","{'coordinates': ['59.8354205', '18.6327766']}" +","['http://mesocosm.org/wp-content/uploads/2018/05/Erken_2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Erken_1-1024x705.jpg']",,,,"['59.8354205', ' 18.6327766']","{'coordinates': ['59.8354205', '18.6327766']}" https://mesocosm.org/mesocosm/resources-garden-of-aquatic-plant/,Resources garden of aquatic plant,"Wuhan Botanical Garden, Chinese Academy of Sciences",China,Asia,"Lumo Road #1, Wuhan, China ","(+86)13297957139 Please login or request access to view contact information. @@ -174,7 +174,7 @@ Tanks with different macrophytes and water depth -","['http://mesocosm.org/wp-content/uploads/2019/03/The-green-house-and-the-heating-control-system-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Outdoor-tanks-with-different-size-and-area-300x225.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Tanks-with-different-macrophytes-and-water-depth-300x225.jpeg']",,,,"['30.54694', '114.41972']","{'coordinates': ['30.54694', '114.41972']}" +","['http://mesocosm.org/wp-content/uploads/2019/03/The-green-house-and-the-heating-control-system-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Outdoor-tanks-with-different-size-and-area-300x225.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Tanks-with-different-macrophytes-and-water-depth-300x225.jpeg']",,,,"['30.54694', '114.41972']","{'coordinates': ['30.54694', '114.41972']}" https://mesocosm.org/mesocosm/large-experimental-array-of-ponds-leap/,Large Experimental Array of Ponds (LEAP),McGill University,Canada,North America,"McGill Department of Biology Stewart Biology Bldg 1205 Dr Penfield Ave @@ -232,7 +232,7 @@ Depth and multiparameter probe (YSI) physico-chemical measurements.  Photo cred -","['http://mesocosm.org/wp-content/uploads/2019/04/3-1024x769.png', 'http://mesocosm.org/wp-content/uploads/2019/04/2-1024x368.png', 'http://mesocosm.org/wp-content/uploads/2019/04/1.png']",,,,"['45.5368', ' -73.1578']","{'coordinates': ['45.5368', '-73.1578']}" +","['http://mesocosm.org/wp-content/uploads/2019/04/3-1024x769.png', 'http://mesocosm.org/wp-content/uploads/2019/04/2-1024x368.png', 'http://mesocosm.org/wp-content/uploads/2019/04/1.png']",,,,"['45.5368', ' -73.1578']","{'coordinates': ['45.5368', '-73.1578']}" https://mesocosm.org/mesocosm/tva%cc%88rminne-mesocosm-facility-tmf/,Tvärminne Mesocosm Facility (TMF),University of Helsinki,Finland,Europe,"University of Helsinki P.O. Box 3 00014 University of Helsinki @@ -268,7 +268,7 @@ SYKE-MRC field mesocosm work at Tvärminne -","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}" +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}" https://mesocosm.org/mesocosm/cretacosmos/,CRETACOSMOS,Hellenic Centre for Marine Research (HCMR),Greece,Europe,"Institute of Oceanography Ex American Base Gournes 71003 Heraklion, Crete @@ -311,7 +311,7 @@ Cretacosmos mesocosm facility (Photo: Vivi Pitta)   -","['http://mesocosm.org/wp-content/uploads/2017/02/Cretacosmos-facility-during-the-LightDynaMix-project-Photo-Stella-A-Berger-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Two-basins-of-the-Cretacosmos-mesocosm-facility-300x188.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Cretacosmos-mesocosm-facility-Photo-Vivi-Pitta-300x113.jpg']",,,,"['35.3387352', '25.14421260']","{'coordinates': ['35.3387352', '25.14421260']}" +","['http://mesocosm.org/wp-content/uploads/2017/02/Cretacosmos-facility-during-the-LightDynaMix-project-Photo-Stella-A-Berger-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Two-basins-of-the-Cretacosmos-mesocosm-facility-300x188.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Cretacosmos-mesocosm-facility-Photo-Vivi-Pitta-300x113.jpg']",,,,"['35.3387352', '25.14421260']","{'coordinates': ['35.3387352', '25.14421260']}" https://mesocosm.org/mesocosm/eawag-experimental-ponds-facility/,Eawag Experimental Ponds Facility,"Eawag, Swiss Federal Institute of Aquatic Science and Technology",Switzerland,Europe,"Eawag, Überlandstrasse 133, 8600 Dübendorf, Switzerland ","Christoph Vorburger Head of Experimental Ponds Committee @@ -358,7 +358,7 @@ Image 3: Scientists taking samples at Eawag’s Experimental Pond Facility in D -","['http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-1-300x186.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-2-300x156.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-3-300x174.jpg']",,,,"['47.40515', '8.60855']","{'coordinates': ['47.40515', '8.60855']}" +","['http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-1-300x186.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-2-300x156.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-3-300x174.jpg']",,,,"['47.40515', '8.60855']","{'coordinates': ['47.40515', '8.60855']}" https://mesocosm.org/mesocosm/lippenbroek-experimental-wetland/,Lippenbroek Experimental Wetland,University of Antwerp,Belgium,Europe,"University of Antwerp Dep. Biology Universiteitsplein 1 @@ -416,7 +416,7 @@ Lippenbroek Experimental Wetland -","['http://mesocosm.org/wp-content/uploads/2017/05/Lippenbroek_5.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lippenbroek_1_314px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lippenbroek_3_400px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lippenbroek_2_400px.jpg']",,,,"['51.09284', '4.157230']","{'coordinates': ['51.09284', '4.157230']}" +","['http://mesocosm.org/wp-content/uploads/2017/05/Lippenbroek_5.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lippenbroek_1_314px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lippenbroek_3_400px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lippenbroek_2_400px.jpg']",,,,"['51.09284', '4.157230']","{'coordinates': ['51.09284', '4.157230']}" https://mesocosm.org/mesocosm/cmu-biological-station-mesocosm-facility/,CMU Biological Station mesocosm facility,"CMU Biological Station, Central Michigan University",USA,North America,"P.O. Box 206, Beaver Island, MI 49782 @@ -458,7 +458,7 @@ climate change ","on site ","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx ","photo credits: CMU Communications -",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}" +",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}" https://mesocosm.org/mesocosm/ims-metu-mesocosm-system/,IMS-METU Mesocosm System,"Middle East Technical University (METU), Institute of Marine Sciences (IMS)",Turkey,Europe,"Middle East Technical University, Institute of Marine Sciences, 33731, Erdemli, Mersin, @@ -513,7 +513,7 @@ Mesocosm tanks are equipped with sensors including GHG measurements, photo credi Dedicated field laboratory and facilities, photo credits: Korhan Özkan     -","['http://mesocosm.org/wp-content/uploads/2023/12/G0018552_1.9MB-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/WhatsApp-Image-2022-07-27-at-10.33.44-AM-1-1024x576.jpeg', 'http://mesocosm.org/wp-content/uploads/2023/12/G0011377_1.8MB-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/IMG_9936_1.9MB-768x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/G0066411_1.9MB-1024x768.jpg']",,,,"['36.564427', ' 34.254018']","{'coordinates': ['36.564427', '34.254018']}" +","['http://mesocosm.org/wp-content/uploads/2023/12/G0018552_1.9MB-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/WhatsApp-Image-2022-07-27-at-10.33.44-AM-1-1024x576.jpeg', 'http://mesocosm.org/wp-content/uploads/2023/12/G0011377_1.8MB-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/IMG_9936_1.9MB-768x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/G0066411_1.9MB-1024x768.jpg']",,,,"['36.564427', ' 34.254018']","{'coordinates': ['36.564427', '34.254018']}" https://mesocosm.org/mesocosm/bermuda-marine-mesocosm-facility-bmmf/,Bermuda Marine Mesocosm Facility (BMMF),ASU Bermuda Institute of Ocean Sciences (ASU BIOS),Bermuda,North America,"17 Biological Station, St. George’s GE01, Bermuda ","Dr. Yvonne Sawall Please login or request access to view contact information. @@ -598,7 +598,7 @@ Utility golf cart For quick and easy transport of life organisms from the boat t Mesocosm overview showing ~3/4 of the facility; photo credits: Yvonne Sawall One of the four 1500-L basins hosting coral fragments.; photo credits: Yvonne Sawall Three 40-L aquaria inside a 500-L basin, each hosting coral fragments. ; photo credits: Chloe Carbonne -","['http://mesocosm.org/wp-content/uploads/2024/11/B31560D9-B8BA-4EA4-9665-B13B46E9372A-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/11/2009F839-BFBF-4D3A-885D-30A359409B74-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/11/6DC60F28-580A-4046-91C5-4C57088CE81F-768x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2024/11/2CCD8F84-538A-40A1-9507-74E4794C3B3A-1024x768.jpg']",,,,"['32.370636', '-64.697763']","{'coordinates': ['32.370636', '-64.697763']}" +","['http://mesocosm.org/wp-content/uploads/2024/11/B31560D9-B8BA-4EA4-9665-B13B46E9372A-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/11/2009F839-BFBF-4D3A-885D-30A359409B74-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/11/6DC60F28-580A-4046-91C5-4C57088CE81F-768x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2024/11/2CCD8F84-538A-40A1-9507-74E4794C3B3A-1024x768.jpg']",,,,"['32.370636', '-64.697763']","{'coordinates': ['32.370636', '-64.697763']}" https://mesocosm.org/mesocosm/limnotrons/,Limnotron,Netherlands Institute for Ecology (NIOO-KNAW),The Netherlands,Europe,"Netherlands Institute for Ecology (NIOO) Droevendaalsesteeg 10 6708 PB Wageningen @@ -647,7 +647,7 @@ Limnotron – a highly controlled experimental unit -","['http://mesocosm.org/wp-content/uploads/2017/02/Limnotron_400px2-300x214.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Limnotrons_400px1-268x300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/Limnotron-a-highly-controlled-experimental-unit-300x225.jpg']",,,,"['51.9876442', '5.6706486']","{'coordinates': ['51.9876442', '5.6706486']}" +","['http://mesocosm.org/wp-content/uploads/2017/02/Limnotron_400px2-300x214.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Limnotrons_400px1-268x300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/Limnotron-a-highly-controlled-experimental-unit-300x225.jpg']",,,,"['51.9876442', '5.6706486']","{'coordinates': ['51.9876442', '5.6706486']}" https://mesocosm.org/mesocosm/aqua-stress/,Aqua-stress,University of Canberra,Australia,Australia,"Institute for Applied Ecology, Faculty of Science and Technology University of Canberra, Bruce, ACT, 2617, Australia ","Jon Bray @@ -688,7 +688,7 @@ Credit: Alica Tschierschke -","['http://mesocosm.org/wp-content/uploads/2019/03/Aqua-stress-1-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Aqua-stress-2-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Aqua-stress-3-300x200.jpg']",,,,"['-35.23511', ' 149.086653']","{'coordinates': ['-35.23511', '149.086653']}" +","['http://mesocosm.org/wp-content/uploads/2019/03/Aqua-stress-1-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Aqua-stress-2-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Aqua-stress-3-300x200.jpg']",,,,"['-35.23511', ' 149.086653']","{'coordinates': ['-35.23511', '149.086653']}" https://mesocosm.org/mesocosm/mesocosm-gmbh/,MESOCOSM GmbH,Institut für Gewaesserschutz,Germany,Europe,"Institut für Gewaesserschutz Neu-Ulrichstein 5 D-35315 Homberg (Ohm) @@ -725,7 +725,7 @@ Mesocosm test basins -","['http://mesocosm.org/wp-content/uploads/2017/05/test-facility-mesocosmGmbH.de_.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/mesocosmGmbH.de_.jpg']",,,,"['50.7527558', '9.0331164']","{'coordinates': ['50.7527558', '9.0331164']}" +","['http://mesocosm.org/wp-content/uploads/2017/05/test-facility-mesocosmGmbH.de_.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/mesocosmGmbH.de_.jpg']",,,,"['50.7527558', '9.0331164']","{'coordinates': ['50.7527558', '9.0331164']}" https://mesocosm.org/mesocosm/pohang-mesocosm-system/,Pohang Mesocosm System,Pohang University of Science and Technology,South Korea,Asia,"Pohang University of Science and Technology 77 CHEONGAM-RO.NAM-GU. POHANG.GYUNGBUK. @@ -744,7 +744,7 @@ Please login or request access to view contact information. 34.886946,128.623892 ",,,,,"http://climate.postech.ac.kr/board/view.do?iboardgroupseq=4&iboardmanagerseq=12 -",,,,,,"['34.886946', '128.623892']","{'coordinates': ['34.886946', '128.623892']}" +",,,,,,"['34.886946', '128.623892']","{'coordinates': ['34.886946', '128.623892']}" https://mesocosm.org/mesocosm/national-experimental-platform-in-aquatic-ecology-planaqua/,National Experimental Platform in Aquatic Ecology (PLANAQUA),,France,Europe,"Ecole Normale Supérieure (ENS) National Centre of Scientific Research (CNRS) Université Pierre et Marie Curie (UPMC) @@ -779,7 +779,7 @@ Graphic of the PLANAQUA facility -","['http://mesocosm.org/wp-content/uploads/2017/02/Saint-Pierre_PLANAQUA-300x206.png', 'http://mesocosm.org/wp-content/uploads/2017/02/Plamaqua_Mesocosms_8.14-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Bild1-225x300.jpg']",,,,"['48.287979', '2.6759703']","{'coordinates': ['48.287979', '2.6759703']}" +","['http://mesocosm.org/wp-content/uploads/2017/02/Saint-Pierre_PLANAQUA-300x206.png', 'http://mesocosm.org/wp-content/uploads/2017/02/Plamaqua_Mesocosms_8.14-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Bild1-225x300.jpg']",,,,"['48.287979', '2.6759703']","{'coordinates': ['48.287979', '2.6759703']}" https://mesocosm.org/mesocosm/cer-mesocosms/,CER Mesocosms,Centre for Ecological Research,Hungary,Europe,"Centre for Ecological Research H-1113 Budapest, Karolina út 29. Hungary @@ -839,7 +839,7 @@ CER mesocosms: in situ experiment (photo credit: Zsófia Horváth) -","['http://mesocosm.org/wp-content/uploads/2023/07/DJI_0203-fotor-20230722131035-1024x637.jpg', 'http://mesocosm.org/wp-content/uploads/2021/05/3.m-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2021/05/4.m-1024x682.jpg']",,,,"['47.705993', '19.229583']","{'coordinates': ['47.705993', '19.229583']}" +","['http://mesocosm.org/wp-content/uploads/2023/07/DJI_0203-fotor-20230722131035-1024x637.jpg', 'http://mesocosm.org/wp-content/uploads/2021/05/3.m-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2021/05/4.m-1024x682.jpg']",,,,"['47.705993', '19.229583']","{'coordinates': ['47.705993', '19.229583']}" https://mesocosm.org/mesocosm/consortium-gwrc-mesocosm-facility/,Great Waters Research Consortium (GWRC) mesocosm facility,"Natural Resources Research Great Waters Research Institute (NRRI), University of Minnesota Duluth; Lake Superior Research Institute (LSRI), University of Wisconsin Superior (joint project)",USA,North America,"Montreal Pier Rd, Superior, WI 54880 USA @@ -888,7 +888,7 @@ Figure credits: Euan D. Reavie -","['http://mesocosm.org/wp-content/uploads/2022/09/pic1.2-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2022/09/pic2.2-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2022/09/pic3-1-1024x625.jpg']",,,,"['46.7109', '-92.0484']","{'coordinates': ['46.7109', '-92.0484']}" +","['http://mesocosm.org/wp-content/uploads/2022/09/pic1.2-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2022/09/pic2.2-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2022/09/pic3-1-1024x625.jpg']",,,,"['46.7109', '-92.0484']","{'coordinates': ['46.7109', '-92.0484']}" https://mesocosm.org/mesocosm/bolmen-forskningsstation/,Bolmen Forskningsstation,Sweden Water Research AB,Sweden,Europe,"Sweden Water Research AB Ideon Science Park Scheelevägen 15 SE-223 70 Lund @@ -927,7 +927,7 @@ Photo credit: Juha Rankinen -","['http://mesocosm.org/wp-content/uploads/2018/05/Bolmen_2-1024x577.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Bolmen_3-1024x577.jpg']",,,,"['56.943190', ' 13.645610']","{'coordinates': ['56.943190', '13.645610']}" +","['http://mesocosm.org/wp-content/uploads/2018/05/Bolmen_2-1024x577.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Bolmen_3-1024x577.jpg']",,,,"['56.943190', ' 13.645610']","{'coordinates': ['56.943190', '13.645610']}" https://mesocosm.org/mesocosm/sinderhoeve/,Sinderhoeve,Wageningen Environmental Research,The Netherlands,Europe,"Telefoonweg 77 6871NJ Renkum The Netherlands @@ -1003,7 +1003,7 @@ SInderhoeve areal; Figure cerdit: Wageningen Environmental Research   -","['http://mesocosm.org/wp-content/uploads/2018/11/Foto-sloten-sinderhoeve-1024x697.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/DSC02496-768x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/IMG_2919-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/Perspectief-Sinderhoeve-kl-1024x679.jpg']",,,,"['51.998681', ' 5.752708']","{'coordinates': ['51.998681', '5.752708']}" +","['http://mesocosm.org/wp-content/uploads/2018/11/Foto-sloten-sinderhoeve-1024x697.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/DSC02496-768x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/IMG_2919-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/Perspectief-Sinderhoeve-kl-1024x679.jpg']",,,,"['51.998681', ' 5.752708']","{'coordinates': ['51.998681', '5.752708']}" https://mesocosm.org/mesocosm/iberian-pond-network-ipn/,Iberian Pond Network (IPN),"InBio/CIBIO, University of Évora","Portugal, Spain",Europe,"InBio/CIBIO, University of Évora, Largo dos Colegiais, 7000 Évora, Portugal ","Prof. Miguel B. Araújo @@ -1045,7 +1045,7 @@ Toledo – La Higueruela Experimental Farm (Spain) -","['http://mesocosm.org/wp-content/uploads/2017/02/IberanPondProject_400x1-300x253.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/charcas_evora_3_295.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/charcas_higueruela_3_295.jpg']",,,,"['41.1465479', '-8.6156998']","{'coordinates': ['41.1465479', '-8.6156998']}" +","['http://mesocosm.org/wp-content/uploads/2017/02/IberanPondProject_400x1-300x253.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/charcas_evora_3_295.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/charcas_higueruela_3_295.jpg']",,,,"['41.1465479', '-8.6156998']","{'coordinates': ['41.1465479', '-8.6156998']}" https://mesocosm.org/mesocosm/iberian-pond-network-ipn/,Iberian Pond Network (IPN),"InBio/CIBIO, University of Évora","Portugal, Spain",Europe,"InBio/CIBIO, University of Évora, Largo dos Colegiais, 7000 Évora, Portugal ","Prof. Miguel B. Araújo @@ -1087,7 +1087,7 @@ Toledo – La Higueruela Experimental Farm (Spain) -","['http://mesocosm.org/wp-content/uploads/2017/02/IberanPondProject_400x1-300x253.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/charcas_evora_3_295.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/charcas_higueruela_3_295.jpg']",,,,"['38.5685819', '-7.9107097']","{'coordinates': ['38.5685819', '-7.9107097']}" +","['http://mesocosm.org/wp-content/uploads/2017/02/IberanPondProject_400x1-300x253.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/charcas_evora_3_295.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/charcas_higueruela_3_295.jpg']",,,,"['38.5685819', '-7.9107097']","{'coordinates': ['38.5685819', '-7.9107097']}" https://mesocosm.org/mesocosm/aquatic-research-facility-at-the-university-of-kansas-field-station/,Aquatic Research Facility at the University of Kansas Field Station,University of Kansas Field Station,USA,North America,"350 Wild Horse Road, Lawrence, KS 66044, USA ","Ted Harris Please login or request access to view contact information. @@ -1406,7 +1406,7 @@ Sampling large mesocosm tanks – Photo Credit Kirsten Bosnak -","['http://mesocosm.org/wp-content/uploads/2019/04/View-of-tanks-replicated-ponds-and-catchment-ponds-–-Photo-Credit-Scott-Campbell-300x199.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/View-of-Cross-Reservoir-–-Photo-Credit-Kirsten-Bosnak-300x199.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/View-core-field-station-facilities-–-Photo-Credit-Google-Earth-300x200.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/View-of-inoculated-mesocosms-in-the-3-season-greenhouse-4-season-greenhouse-also-exists-–-Photo-Credit-Ted-Harris-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/One-set-of-the-replicated-ponds–-Photo-Credit-Scott-Campbell-300x199.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/Sampling-large-mesocosm-tanks-–-Photo-Credit-Kirsten-Bosnak-300x199.jpeg']",['http://mesocosm.org/wp-content/uploads/2019/04/equipment-300x199.jpeg'],['http://mesocosm.org/wp-content/uploads/2019/04/lodging-300x199.jpeg'],,"['39.048918', '-95.191171']","{'coordinates': ['39.048918', '-95.191171']}" +","['http://mesocosm.org/wp-content/uploads/2019/04/View-of-tanks-replicated-ponds-and-catchment-ponds-–-Photo-Credit-Scott-Campbell-300x199.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/View-of-Cross-Reservoir-–-Photo-Credit-Kirsten-Bosnak-300x199.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/View-core-field-station-facilities-–-Photo-Credit-Google-Earth-300x200.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/View-of-inoculated-mesocosms-in-the-3-season-greenhouse-4-season-greenhouse-also-exists-–-Photo-Credit-Ted-Harris-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/One-set-of-the-replicated-ponds–-Photo-Credit-Scott-Campbell-300x199.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/Sampling-large-mesocosm-tanks-–-Photo-Credit-Kirsten-Bosnak-300x199.jpeg']",['http://mesocosm.org/wp-content/uploads/2019/04/equipment-300x199.jpeg'],['http://mesocosm.org/wp-content/uploads/2019/04/lodging-300x199.jpeg'],,"['39.048918', '-95.191171']","{'coordinates': ['39.048918', '-95.191171']}" https://mesocosm.org/mesocosm/life-infrastructure-ecp-facility-behavioural-ecology-of-fish-st-pee-lapitxuri/,"LIFE Infrastructure - ECP Facility (Behavioural Ecology of Fish, St Pée/Lapitxuri)",Infrastructure multi-site: RI LIFE,France,Europe,"RI LIFE INRA-AQUAPOLE Agnes Bardonnet 64310 St-Pée-sur-Nivelle @@ -1501,7 +1501,7 @@ Lapitxuri semi-natural stream, Foto credit: Glise/INRA   -","['http://mesocosm.org/wp-content/uploads/2018/11/ECP_Aerial-view_St-Pée-1024x741.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Flume-1024x684.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Aerial-view_Lapitxuri.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Lapitxuri-semi-natural-stream.jpg']",,,,"['43.3561111', ' -1.5616666666666668']","{'coordinates': ['43.3561111', '-1.5616666666666668']}" +","['http://mesocosm.org/wp-content/uploads/2018/11/ECP_Aerial-view_St-Pée-1024x741.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Flume-1024x684.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Aerial-view_Lapitxuri.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Lapitxuri-semi-natural-stream.jpg']",,,,"['43.3561111', ' -1.5616666666666668']","{'coordinates': ['43.3561111', '-1.5616666666666668']}" https://mesocosm.org/mesocosm/life-infrastructure-ecp-facility-behavioural-ecology-of-fish-st-pee-lapitxuri/,"LIFE Infrastructure - ECP Facility (Behavioural Ecology of Fish, St Pée/Lapitxuri)",Infrastructure multi-site: RI LIFE,France,Europe,"RI LIFE INRA-AQUAPOLE Agnes Bardonnet 64310 St-Pée-sur-Nivelle @@ -1596,7 +1596,7 @@ Lapitxuri semi-natural stream, Foto credit: Glise/INRA   -","['http://mesocosm.org/wp-content/uploads/2018/11/ECP_Aerial-view_St-Pée-1024x741.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Flume-1024x684.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Aerial-view_Lapitxuri.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Lapitxuri-semi-natural-stream.jpg']",,,,"[' 43.2833333', ' -1.4822222222222223']","{'coordinates': ['43.2833333', '-1.4822222222222223']}" +","['http://mesocosm.org/wp-content/uploads/2018/11/ECP_Aerial-view_St-Pée-1024x741.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Flume-1024x684.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Aerial-view_Lapitxuri.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Lapitxuri-semi-natural-stream.jpg']",,,,"[' 43.2833333', ' -1.4822222222222223']","{'coordinates': ['43.2833333', '-1.4822222222222223']}" https://mesocosm.org/mesocosm/heated-aquatic-mesocosms-for-climate-warming-experiment/,Heated Aquatic Mesocosms for Climate Warming Experiment,"Nanjing Institute of Geography and Limnology, Chinese Academy of Sciences",China,Asia,"73 East Beijing Road, Nanjing, China ","Dr. Hu He Please login or request access to view contact information. @@ -1646,7 +1646,7 @@ Water temperature trends -","['https://www.aquacosm.eu/wp-content/uploads/2019/03/location-300x170.png', 'https://www.aquacosm.eu/wp-content/uploads/2019/03/Experiment-setting-300x225.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Unheated-mesocosms-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Heated-mesocosms-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Water-temperature-trends-300x209.png']",,,,"['31.418517', '120.218446']","{'coordinates': ['31.418517', '120.218446']}" +","['https://www.aquacosm.eu/wp-content/uploads/2019/03/location-300x170.png', 'https://www.aquacosm.eu/wp-content/uploads/2019/03/Experiment-setting-300x225.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Unheated-mesocosms-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Heated-mesocosms-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Water-temperature-trends-300x209.png']",,,,"['31.418517', '120.218446']","{'coordinates': ['31.418517', '120.218446']}" https://mesocosm.org/mesocosm/tropical-aquatic-ecology-mesocosm/,Tropical Aquatic Ecology Mesocosm,State University of Goiás,Brazil,South America,"BR153, Nº3105, Anápolis, Goiás, Brazil. ","Dr. João Carlos Nabout Please login or request access to view contact information. @@ -1694,7 +1694,7 @@ Figure 4 Mesocosm of Tropical Aquatic Ecology – Finalized (Photo credit: João -","['http://mesocosm.org/wp-content/uploads/2019/03/Figure-1-Mesocosm-of-Tropical-Aquatic-Ecology-–-Phase-of-construction-300x225.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Figure-2-Mesocosm-of-Tropical-Aquatic-Ecology-–-Phase-of-construction-300x128.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Figure-3-Mesocosm-of-Tropical-Aquatic-Ecology-–-Pilot-of-first-studies-300x224.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Figure-4-Mesocosm-of-Tropical-Aquatic-Ecology-Finalized-300x127.jpeg']",,,,"['-16.37930', '-48.94672']","{'coordinates': ['-16.37930', '-48.94672']}" +","['http://mesocosm.org/wp-content/uploads/2019/03/Figure-1-Mesocosm-of-Tropical-Aquatic-Ecology-–-Phase-of-construction-300x225.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Figure-2-Mesocosm-of-Tropical-Aquatic-Ecology-–-Phase-of-construction-300x128.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Figure-3-Mesocosm-of-Tropical-Aquatic-Ecology-–-Pilot-of-first-studies-300x224.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Figure-4-Mesocosm-of-Tropical-Aquatic-Ecology-Finalized-300x127.jpeg']",,,,"['-16.37930', '-48.94672']","{'coordinates': ['-16.37930', '-48.94672']}" https://mesocosm.org/mesocosm/life-infrastructure-pearl-facility-experimental-aquatic-platform-rennes-le-rheu/,"LIFE Infrastructure - PEARL facility (Experimental Aquatic Platform, Rennes/Le Rheu)",Infrastructure multi-site: RI LIFE,France,Europe,"RI LIFE INRA-AQUAPOLE Agnes Bardonnet 64310 St-Pée-sur-Nivelle @@ -1793,7 +1793,7 @@ Series of mesocosms 30 m3 and 9 m3, Foto credit: Beaumont/INRA   -","['http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Aerial_view_Rennes_experimental_complex.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Serie_of_30_mesocoms_3-m3-1024x678.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Aerial_view-Ponds-Station_PF-Etangs-1024x594.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Mesocosms_Series_30m3_and_9-m3-1024x678.jpg']",,,,"['48.1130833', ' -1.4822222222222223']","{'coordinates': ['48.1130833', '-1.4822222222222223']}" +","['http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Aerial_view_Rennes_experimental_complex.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Serie_of_30_mesocoms_3-m3-1024x678.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Aerial_view-Ponds-Station_PF-Etangs-1024x594.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Mesocosms_Series_30m3_and_9-m3-1024x678.jpg']",,,,"['48.1130833', ' -1.4822222222222223']","{'coordinates': ['48.1130833', '-1.4822222222222223']}" https://mesocosm.org/mesocosm/life-infrastructure-pearl-facility-experimental-aquatic-platform-rennes-le-rheu/,"LIFE Infrastructure - PEARL facility (Experimental Aquatic Platform, Rennes/Le Rheu)",Infrastructure multi-site: RI LIFE,France,Europe,"RI LIFE INRA-AQUAPOLE Agnes Bardonnet 64310 St-Pée-sur-Nivelle @@ -1892,7 +1892,7 @@ Series of mesocosms 30 m3 and 9 m3, Foto credit: Beaumont/INRA   -","['http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Aerial_view_Rennes_experimental_complex.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Serie_of_30_mesocoms_3-m3-1024x678.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Aerial_view-Ponds-Station_PF-Etangs-1024x594.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Mesocosms_Series_30m3_and_9-m3-1024x678.jpg']",,,,"[' 48.1202778', ' -1.7919444444444443']","{'coordinates': ['48.1202778', '-1.7919444444444443']}" +","['http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Aerial_view_Rennes_experimental_complex.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Serie_of_30_mesocoms_3-m3-1024x678.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Aerial_view-Ponds-Station_PF-Etangs-1024x594.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Mesocosms_Series_30m3_and_9-m3-1024x678.jpg']",,,,"[' 48.1202778', ' -1.7919444444444443']","{'coordinates': ['48.1202778', '-1.7919444444444443']}" https://mesocosm.org/mesocosm/kosmos-kiel-off-shore-mesocosms-for-ocean-simulations/,KOSMOS (Kiel Off-Shore Mesocosms for Ocean Simulations),GEOMAR-Helmholtz Center for Ocean Research Kiel,Germany,Europe,"GEOMAR-Helmholtz Center for Ocean Research West shore campus Düsternbrooker Weg 20 @@ -1938,7 +1938,7 @@ Sampling of the KOSMOS mesocosms during an experiment on the effects of ocean ac -","['http://mesocosm.org/wp-content/uploads/2017/02/KOSMOS-Raunefjord_2011-300x142.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/KOSMOS-deployment-with-the-Spanish-research-vessel-„Hesprides“-off-Gran-Canaria-in-2014-300x225.png', 'http://mesocosm.org/wp-content/uploads/2017/03/Sampling-of-the-KOSMOS-mesocosms-during-an-experiment-on-the-effects-of-ocean-acidification-off-Gran-Canaria-in-2014-300x225.png']",,,,"['54.330034', '10.1482026']","{'coordinates': ['54.330034', '10.1482026']}" +","['http://mesocosm.org/wp-content/uploads/2017/02/KOSMOS-Raunefjord_2011-300x142.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/KOSMOS-deployment-with-the-Spanish-research-vessel-„Hesprides“-off-Gran-Canaria-in-2014-300x225.png', 'http://mesocosm.org/wp-content/uploads/2017/03/Sampling-of-the-KOSMOS-mesocosms-during-an-experiment-on-the-effects-of-ocean-acidification-off-Gran-Canaria-in-2014-300x225.png']",,,,"['54.330034', '10.1482026']","{'coordinates': ['54.330034', '10.1482026']}" https://mesocosm.org/mesocosm/maximus/,MAXIMUS,Roskilde University,Denmark,Europe,"Roskilde University Universitetsvej 1 P.O. Box 260 @@ -1957,7 +1957,7 @@ Please login or request access to view contact information. ",,,,,"http://rucforsk.ruc.dk/site/person/bhansen Impaq project: Turbot tracked in a tanknutrients, -",,,,,,"['55.6519602', '12.137471']","{'coordinates': ['55.6519602', '12.137471']}" +",,,,,,"['55.6519602', '12.137471']","{'coordinates': ['55.6519602', '12.137471']}" https://mesocosm.org/mesocosm/innotech-alberta-aquatic-mesocosm-facility/,InnoTech Alberta Aquatic Mesocosm Facility,InnoTech Alberta,Canada,North America,"PO Bag 4000 Hwy 16A & 75 Street Vegreville, Alberta, Canada, T9C 1T4 @@ -2060,7 +2060,7 @@ A water layer is maintained at the bottom of the mesocosms during winter, photo InnoTech Alberta Aquatic Mesocosm Facility, photo credit: InnoTech Alberta Elevated view of mesocosm facility with 2 smaller tanks nested within each of the main mesocosm tanks on the bermed containment pad. Photo Credit: InnoTech Alberta Mescocosms being used for an aquatic experiment. Note the floating automated CO2 flux chambers in the tanks in the foreground. Photo Credit: InnoTech Alberta -","['http://mesocosm.org/wp-content/uploads/2023/08/sunset-innotech-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/08/sinter-innotech.jpg', 'http://mesocosm.org/wp-content/uploads/2023/08/birdview-InnoTech-1024x469.jpg', 'http://mesocosm.org/wp-content/uploads/2023/08/birdeye.jpg', 'http://mesocosm.org/wp-content/uploads/2023/08/ter2.jpg']",,,,"['53.506641', '-112.093612']","{'coordinates': ['53.506641', '-112.093612']}" +","['http://mesocosm.org/wp-content/uploads/2023/08/sunset-innotech-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/08/sinter-innotech.jpg', 'http://mesocosm.org/wp-content/uploads/2023/08/birdview-InnoTech-1024x469.jpg', 'http://mesocosm.org/wp-content/uploads/2023/08/birdeye.jpg', 'http://mesocosm.org/wp-content/uploads/2023/08/ter2.jpg']",,,,"['53.506641', '-112.093612']","{'coordinates': ['53.506641', '-112.093612']}" https://mesocosm.org/mesocosm/lmu-mesocosms/,LMU Mesocosms,Ludwig-Maximilians-Universität,Germany,Europe,"Ludwig-Maximilians-Universität München Department Biologie II Aquatic Ecology @@ -2096,7 +2096,7 @@ Munich Mesocosm facility on Campus, Photo: Dr. Stella Berger -","['http://mesocosm.org/wp-content/uploads/2017/02/Munih_mesocosms2-300x188.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Munich_mesocosms1-300x225.jpg']",,,,"['48.109151', '11.45844']","{'coordinates': ['48.109151', '11.45844']}" +","['http://mesocosm.org/wp-content/uploads/2017/02/Munih_mesocosms2-300x188.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Munich_mesocosms1-300x225.jpg']",,,,"['48.109151', '11.45844']","{'coordinates': ['48.109151', '11.45844']}" https://mesocosm.org/mesocosm/crimac-calabria-marine-centre/,Crimac – Calabria Marine Centre,Stazione Zoologica Anton Dohrn,Italy,Europe,"Contrada Torre Spaccata, Località Torre Spaccata, 87071 Amendolara (CS), @@ -2146,7 +2146,7 @@ https://www.szn.it/index.php/it/chi-siamo/le-nostre-sedi/sedi-territoriali-di-ti ","Amendolara Seat – outdoor facility, photo credits: Detail of Rack, photo credits: Filtration System, photo credit: -","['http://mesocosm.org/wp-content/uploads/2025/06/Photo-1.2-Amendolara-seat-outdoor-facility-Kopie-1024x714.jpg', 'http://mesocosm.org/wp-content/uploads/2025/06/Photo-3-Detail-of-Rack-2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2025/06/Photo-2.2-Filtration-System-Kopie-1024x768.jpg']",,,,['39.9588889'],{'coordinates': nan} +","['http://mesocosm.org/wp-content/uploads/2025/06/Photo-1.2-Amendolara-seat-outdoor-facility-Kopie-1024x714.jpg', 'http://mesocosm.org/wp-content/uploads/2025/06/Photo-3-Detail-of-Rack-2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2025/06/Photo-2.2-Filtration-System-Kopie-1024x768.jpg']",,,,['39.9588889'],{'coordinates': nan} https://mesocosm.org/mesocosm/crimac-calabria-marine-centre/,Crimac – Calabria Marine Centre,Stazione Zoologica Anton Dohrn,Italy,Europe,"Contrada Torre Spaccata, Località Torre Spaccata, 87071 Amendolara (CS), @@ -2196,7 +2196,7 @@ https://www.szn.it/index.php/it/chi-siamo/le-nostre-sedi/sedi-territoriali-di-ti ","Amendolara Seat – outdoor facility, photo credits: Detail of Rack, photo credits: Filtration System, photo credit: -","['http://mesocosm.org/wp-content/uploads/2025/06/Photo-1.2-Amendolara-seat-outdoor-facility-Kopie-1024x714.jpg', 'http://mesocosm.org/wp-content/uploads/2025/06/Photo-3-Detail-of-Rack-2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2025/06/Photo-2.2-Filtration-System-Kopie-1024x768.jpg']",,,,['16.62666666666667'],{'coordinates': nan} +","['http://mesocosm.org/wp-content/uploads/2025/06/Photo-1.2-Amendolara-seat-outdoor-facility-Kopie-1024x714.jpg', 'http://mesocosm.org/wp-content/uploads/2025/06/Photo-3-Detail-of-Rack-2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2025/06/Photo-2.2-Filtration-System-Kopie-1024x768.jpg']",,,,['16.62666666666667'],{'coordinates': nan} https://mesocosm.org/mesocosm/ceh-aquatic-mesocosm-facility-camf/,CEH Aquatic Mesocosm Facility (CAMF),Centre for Ecology & Hydrology (CEH),United Kingdom,Europe,"Centre for Ecology & Hydrology (CEH) Lancaster University Library Avenue @@ -2254,7 +2254,7 @@ Figure credits: Heidrun Feuchtmayr -","['http://mesocosm.org/wp-content/uploads/2019/07/IMG_5163-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2019/07/IMG_5156-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2019/07/CAMF-schematic.jpg']",,,,"['54.014373', ' -2.777004']","{'coordinates': ['54.014373', '-2.777004']}" +","['http://mesocosm.org/wp-content/uploads/2019/07/IMG_5163-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2019/07/IMG_5156-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2019/07/CAMF-schematic.jpg']",,,,"['54.014373', ' -2.777004']","{'coordinates': ['54.014373', '-2.777004']}" https://mesocosm.org/mesocosm/experimental-mesocosm-facility-at-friday-harbor-labs-fhl/,Experimental Mesocosm Facility at Friday Harbor Labs (FHL),University of Washington,USA,North-America,"University of Washington School of Oceanography 1503 NE Boat Street @@ -2317,7 +2317,7 @@ The lab is supplied with conditioned water from a custom filtration and CO2 stri -","['http://mesocosm.org/wp-content/uploads/2017/05/outdoor-oalab4-300x129.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/indoor-oalab3.jpg']",,,,"['48.5466503', '-123.0127619']","{'coordinates': ['48.5466503', '-123.0127619']}" +","['http://mesocosm.org/wp-content/uploads/2017/05/outdoor-oalab4-300x129.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/indoor-oalab3.jpg']",,,,"['48.5466503', '-123.0127619']","{'coordinates': ['48.5466503', '-123.0127619']}" https://mesocosm.org/mesocosm/mekjarvik-research-station/,Mekjarvik Research Station,International Research Institute of Stavanger (IRIS),Norway,Europe,"IRIS P. O. Box 8046, 4068 Stavanger, (mailing address) Prof. Olav Hanssensvei 15, 4021 Stavanger (visiting address) @@ -2384,7 +2384,7 @@ Photo: Leon Moodley   -","['http://mesocosm.org/wp-content/uploads/2018/04/Stavanger-1-300x279.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/Stavanger-2-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/Stavanger-3-300x200.jpg']",,,,"['59.0206314', ' 5.6159267000000455']","{'coordinates': ['59.0206314', '5.6159267000000455']}" +","['http://mesocosm.org/wp-content/uploads/2018/04/Stavanger-1-300x279.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/Stavanger-2-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/Stavanger-3-300x200.jpg']",,,,"['59.0206314', ' 5.6159267000000455']","{'coordinates': ['59.0206314', '5.6159267000000455']}" https://mesocosm.org/mesocosm/mesocosms-at-the-upper-parana-river-nupelia-field-station/,Mesocosms at the Upper Paraná River (Nupélia Field Station),Universidade Estadual de Maringá – UEM,Brazil,South America,"Av. Colombo 5790, Maringá, PR, Brazil, 87020-900 ","Roger Paulo Mormul Please login or request access to view contact information. @@ -2413,7 +2413,7 @@ Please login or request access to view contact information. -","['http://mesocosm.org/wp-content/uploads/2019/03/Mesocosmos-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Fieldstation-300x224.png']",,,,"['-22.765525', '-53.2572166']","{'coordinates': ['-22.765525', '-53.2572166']}" +","['http://mesocosm.org/wp-content/uploads/2019/03/Mesocosmos-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Fieldstation-300x224.png']",,,,"['-22.765525', '-53.2572166']","{'coordinates': ['-22.765525', '-53.2572166']}" https://mesocosm.org/mesocosm/sites-aquanet-asa-research-station/,SITES AquaNet – Asa Research Station,SITES and Swedish University of Agricultural Sciences,Sweden,Europe,"Sveriges lantbruksuniversitet (SLU) Unit for Field-based Forest Research Asa Research Station @@ -2455,7 +2455,7 @@ Photo credit: Ola Langvall   -","['http://mesocosm.org/wp-content/uploads/2018/05/Asa_1-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Asa_3-1024x574.jpg']",,,,"['57.164325', ' 14.782712']","{'coordinates': ['57.164325', '14.782712']}" +","['http://mesocosm.org/wp-content/uploads/2018/05/Asa_1-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Asa_3-1024x574.jpg']",,,,"['57.164325', ' 14.782712']","{'coordinates': ['57.164325', '14.782712']}" https://mesocosm.org/mesocosm/solbergstrand-experimental-facility-sef/,Solbergstrand Experimental Facility (SEF),Norwegian Institute for Water Research,Norway,Europe,"Norwegian Institute for Water Research NIVA Oslo Gaustadalléen 21 @@ -2515,7 +2515,7 @@ oddbjoern.pettersen@niva.no -","['http://mesocosm.org/wp-content/uploads/2017/02/Drøbak_mesocosms-construction_400px-300x176.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Solbergstrand_Mesocosms_400x1-300x221.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Solbergstrand_Flumes_400px2-300x136.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Solberstrand_Flumes_400px1-300x213.jpg']",,,,"['59.6157541', '10.6528178']","{'coordinates': ['59.6157541', '10.6528178']}" +","['http://mesocosm.org/wp-content/uploads/2017/02/Drøbak_mesocosms-construction_400px-300x176.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Solbergstrand_Mesocosms_400x1-300x221.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Solbergstrand_Flumes_400px2-300x136.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Solberstrand_Flumes_400px1-300x213.jpg']",,,,"['59.6157541', '10.6528178']","{'coordinates': ['59.6157541', '10.6528178']}" https://mesocosm.org/mesocosm/sletvik-field-station/,Sletvik Field Station,Norwegian University of Science and Technology,Norway,Europe,"Norwegian University of Science and Technology Department of Biology Trondhjem Biological Station @@ -2536,7 +2536,7 @@ sea based mesocosms ",,,"Two large lecturing and three smaller laboratories, one of which has access to salt water, and a meeting room. ","Accommodation for 50 people, kitchen and dining room, lounge, bedrooms, showers, washing rooms and a sauna. All meals are served at the station and normally consist of a self-service breakfast, lunch packet and dinner. The kitchen can be used in the evening by appointment with the station’s attendant chef. ","http://www.ntnu.edu/biology/sletvik-field-station -",,,,,,"['63.5929285', '9.5457926']","{'coordinates': ['63.5929285', '9.5457926']}" +",,,,,,"['63.5929285', '9.5457926']","{'coordinates': ['63.5929285', '9.5457926']}" https://mesocosm.org/mesocosm/wuhan-warming-mesocosm-facility-wwmf/,Wuhan Warming Mesocosm Facility (WWMF),"1. Institute of Hydrobiology, Chinese Academy of Sciences (IHB-CAS); 2. College of Fischeries, Huazhong Agricultural University",China,Asia," Institute of Hydrobiology, Chinese Academy of Sciences; Address: No. 7 Donghu South Road, Wuchang District, Wuhan, Hubei Province, China Huazhong Agricultural University; Address: No. 1, Shizishan Street, Hongshan District, Wuhan, Hubei Province, China @@ -2591,7 +2591,7 @@ Photo credit: Chao Li -","['http://mesocosm.org/wp-content/uploads/2019/01/WWMF2.jpg', 'http://mesocosm.org/wp-content/uploads/2019/01/WWMF1-1024x767.jpg']",,,,"['30.4670833', ' 114.35961111111111']","{'coordinates': ['30.4670833', '114.35961111111111']}" +","['http://mesocosm.org/wp-content/uploads/2019/01/WWMF2.jpg', 'http://mesocosm.org/wp-content/uploads/2019/01/WWMF1-1024x767.jpg']",,,,"['30.4670833', ' 114.35961111111111']","{'coordinates': ['30.4670833', '114.35961111111111']}" https://mesocosm.org/mesocosm/kob-kiel-outdoor-benthocosms/,KOB (Kiel-Outdoor-Benthocosms),GEOMAR-Helmholtz Center for Ocean Research,Germany,Europe,"GEOMAR-Helmholtz Center for Ocean Research West shore campus Düsternbrooker Weg 20 @@ -2631,7 +2631,7 @@ KOB – Kiel Outdoor Benthocosms (Photo: Mark Lenz) -","['http://mesocosm.org/wp-content/uploads/2017/02/KOB_2_400_Wahl_1-282x300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/KOB_3_400_Lenz-300x201.jpg']",,,,"['54.330034', '10.1482026']","{'coordinates': ['54.330034', '10.1482026']}" +","['http://mesocosm.org/wp-content/uploads/2017/02/KOB_2_400_Wahl_1-282x300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/KOB_3_400_Lenz-300x201.jpg']",,,,"['54.330034', '10.1482026']","{'coordinates': ['54.330034', '10.1482026']}" https://mesocosm.org/mesocosm/the-sven-loven-centre-for-marine-sciences/,The Sven Lovén Centre for Marine Sciences,University of Gothenburg,Sweden,Europe,"University of Gothenburg PO Box 100, SE-405 30 Gothenburg, SWEDEN Visiting address: Vasaparken @@ -2662,7 +2662,7 @@ ecotrons -",['http://mesocosm.org/wp-content/uploads/2017/05/marine-ecotron.jpg'],,,,"['58.2498484', '11.4449296']","{'coordinates': ['58.2498484', '11.4449296']}" +",['http://mesocosm.org/wp-content/uploads/2017/05/marine-ecotron.jpg'],,,,"['58.2498484', '11.4449296']","{'coordinates': ['58.2498484', '11.4449296']}" https://mesocosm.org/mesocosm/medimeer-mediterranean-platform-for-marine-ecosystem-experimental-research/,MEDIMEER (MEDIterranean platform for Marine Ecosystem Experimental Research),CNRS,France,Europe,"MEDIMEER 2 Rue des Chantiers 34200, Sète @@ -2709,7 +2709,7 @@ Fig.3 LAMP in Dia Island, Crete (Photo: Dr. Behzad Mostajir) -","['http://mesocosm.org/wp-content/uploads/2017/03/Fig.1-Permanent-floating-structure-Photo-Dr.-Behzad-Mostajir.png', 'http://mesocosm.org/wp-content/uploads/2017/03/Fig.2-Pelagic-mesocosms-Photo-Dr.-Behzad-Mostajir.png', 'http://mesocosm.org/wp-content/uploads/2017/02/LAMP-300x129.png']",,,,"['43.4118721', '3.6907914']","{'coordinates': ['43.4118721', '3.6907914']}" +","['http://mesocosm.org/wp-content/uploads/2017/03/Fig.1-Permanent-floating-structure-Photo-Dr.-Behzad-Mostajir.png', 'http://mesocosm.org/wp-content/uploads/2017/03/Fig.2-Pelagic-mesocosms-Photo-Dr.-Behzad-Mostajir.png', 'http://mesocosm.org/wp-content/uploads/2017/02/LAMP-300x129.png']",,,,"['43.4118721', '3.6907914']","{'coordinates': ['43.4118721', '3.6907914']}" https://mesocosm.org/mesocosm/rsd-facility/,RSD Facility,Faculty of Food Sciences and Fisheries,Poland,Europe,"Kazimierza Królewicza 4, 71550 Szczecin, Poland ","Remigiusz Panicz Please login or request access to view contact information. @@ -2777,7 +2777,7 @@ Kempter J., Kiełpiński M., Panicz R., Sadowski J., Mysłowski B., Bergmann S. -","['http://mesocosm.org/wp-content/uploads/2019/03/RSD-Facility-300x177.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-69-of-76-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-22-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-20-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-19-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/PART_1548849527972-225x300.jpeg']",,,,"['53.209861', '14.463944']","{'coordinates': ['53.209861', '14.463944']}" +","['http://mesocosm.org/wp-content/uploads/2019/03/RSD-Facility-300x177.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-69-of-76-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-22-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-20-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-19-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/PART_1548849527972-225x300.jpeg']",,,,"['53.209861', '14.463944']","{'coordinates': ['53.209861', '14.463944']}" https://mesocosm.org/mesocosm/rsd-facility/,RSD Facility,Faculty of Food Sciences and Fisheries,Poland,Europe,"Kazimierza Królewicza 4, 71550 Szczecin, Poland ","Remigiusz Panicz Please login or request access to view contact information. @@ -2845,7 +2845,7 @@ Kempter J., Kiełpiński M., Panicz R., Sadowski J., Mysłowski B., Bergmann S. -","['http://mesocosm.org/wp-content/uploads/2019/03/RSD-Facility-300x177.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-69-of-76-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-22-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-20-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-19-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/PART_1548849527972-225x300.jpeg']",,,,"['53.44505', '14.562861']","{'coordinates': ['53.44505', '14.562861']}" +","['http://mesocosm.org/wp-content/uploads/2019/03/RSD-Facility-300x177.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-69-of-76-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-22-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-20-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-19-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/PART_1548849527972-225x300.jpeg']",,,,"['53.44505', '14.562861']","{'coordinates': ['53.44505', '14.562861']}" https://mesocosm.org/mesocosm/gault-nature-reserve-mesocosm-platform/,Gault Nature Reserve Mesocosm Platform,McGill University,Canada,North America,"845 Sherbrooke St W Montreal QC H3A 0G4 @@ -2916,7 +2916,7 @@ Photo credit: Egor Katkov -","['http://mesocosm.org/wp-content/uploads/2019/08/Gault-Mesocosms-4-credit-Gregor-Fussmann-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2019/08/Gault-Mesocosms-2-credit-Egor-Katkov-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2019/08/Gault-Mesocosms-5-credit-Gregor-Fussmann-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2019/08/Gault-Mesocosms-3-credit-Egor-Katkov-1024x576.jpg']",,,,"['45.543060', ' -73.150762']","{'coordinates': ['45.543060', '-73.150762']}" +","['http://mesocosm.org/wp-content/uploads/2019/08/Gault-Mesocosms-4-credit-Gregor-Fussmann-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2019/08/Gault-Mesocosms-2-credit-Egor-Katkov-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2019/08/Gault-Mesocosms-5-credit-Gregor-Fussmann-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2019/08/Gault-Mesocosms-3-credit-Egor-Katkov-1024x576.jpg']",,,,"['45.543060', ' -73.150762']","{'coordinates': ['45.543060', '-73.150762']}" https://mesocosm.org/mesocosm/silwood-mesocosm-facility-smf/,Silwood Mesocosm Facility (SMF),Imperial College London,United Kingdom,Europe,"Silwood Park Campus, Imperial College London, Ascot, UK ","Prof. Guy Woodward, Please login or request access to view contact information.;  Dr. Michelle Jackson,Please login or request access to view contact information.m.jackson@imperial.ac.ukPlease login or request access to view contact information.; @@ -2942,7 +2942,7 @@ Dr. Emma Ransome,Please login or request access to view contact information.e.ra -","['http://mesocosm.org/wp-content/uploads/2017/03/SMF-1.png', 'http://mesocosm.org/wp-content/uploads/2017/03/SMF-2.jpg']",,,,"['51.51772460', '-0.17322940']","{'coordinates': ['51.51772460', '-0.17322940']}" +","['http://mesocosm.org/wp-content/uploads/2017/03/SMF-1.png', 'http://mesocosm.org/wp-content/uploads/2017/03/SMF-2.jpg']",,,,"['51.51772460', '-0.17322940']","{'coordinates': ['51.51772460', '-0.17322940']}" https://mesocosm.org/mesocosm/exstream-system-china/,ExStream System China,Xi'an Jiaotong-Liverpool University,China,Asia,"Xi’an Jiaotong-Liverpool University 111 Ren’ai Road, Suzhou Dushu Lake Science and Education Innovation District Suzhou Industrial Park Suzhou, Jiangsu Province, @@ -2998,7 +2998,7 @@ Figure credit: Jeremy (Jay) Piggott -","['http://mesocosm.org/wp-content/uploads/2018/10/34498B12-BD94-4312-8FFD-C92FA6BA75D4@tcd.ie_-e1540461299359-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/54889AEB-229B-40CC-8773-52FAD7DE72D2@tcd.ie_-e1540461322675-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/F8410BFC-4161-4E95-9D6E-A1CBDECD2109@tcd.ie_-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"['31.276111', ' 120.7325']","{'coordinates': ['31.276111', '120.7325']}" +","['http://mesocosm.org/wp-content/uploads/2018/10/34498B12-BD94-4312-8FFD-C92FA6BA75D4@tcd.ie_-e1540461299359-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/54889AEB-229B-40CC-8773-52FAD7DE72D2@tcd.ie_-e1540461322675-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/F8410BFC-4161-4E95-9D6E-A1CBDECD2109@tcd.ie_-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"['31.276111', ' 120.7325']","{'coordinates': ['31.276111', '120.7325']}" https://mesocosm.org/mesocosm/exstream-system-china/,ExStream System China,Xi'an Jiaotong-Liverpool University,China,Asia,"Xi’an Jiaotong-Liverpool University 111 Ren’ai Road, Suzhou Dushu Lake Science and Education Innovation District Suzhou Industrial Park Suzhou, Jiangsu Province, @@ -3054,7 +3054,7 @@ Figure credit: Jeremy (Jay) Piggott -","['http://mesocosm.org/wp-content/uploads/2018/10/34498B12-BD94-4312-8FFD-C92FA6BA75D4@tcd.ie_-e1540461299359-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/54889AEB-229B-40CC-8773-52FAD7DE72D2@tcd.ie_-e1540461322675-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/F8410BFC-4161-4E95-9D6E-A1CBDECD2109@tcd.ie_-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"[' 30.118056', ' 118.023889']","{'coordinates': ['30.118056', '118.023889']}" +","['http://mesocosm.org/wp-content/uploads/2018/10/34498B12-BD94-4312-8FFD-C92FA6BA75D4@tcd.ie_-e1540461299359-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/54889AEB-229B-40CC-8773-52FAD7DE72D2@tcd.ie_-e1540461322675-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/F8410BFC-4161-4E95-9D6E-A1CBDECD2109@tcd.ie_-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"[' 30.118056', ' 118.023889']","{'coordinates': ['30.118056', '118.023889']}" https://mesocosm.org/mesocosm/exstream-system-ireland/,ExStream System Ireland,University College Dublin in collaboration with Trinity College Dublin,Ireland,Europe,"Belfield, Dublin 4 ","Assoc. Prof. Mary Kelly-Quinn ExStream network coordinator Asst. Prof. Jeremy J. Piggott @@ -3100,7 +3100,7 @@ Figure credit: Jeremy (Jay) Piggott   -","['http://mesocosm.org/wp-content/uploads/2018/05/IMG_1176-683x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/DJI_0011-1024x575.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"['53.307444', ' -6.227611']","{'coordinates': ['53.307444', '-6.227611']}" +","['http://mesocosm.org/wp-content/uploads/2018/05/IMG_1176-683x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/DJI_0011-1024x575.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"['53.307444', ' -6.227611']","{'coordinates': ['53.307444', '-6.227611']}" https://mesocosm.org/mesocosm/lunz-mesocosm-infrastructure-lmi/,Lunz Mesocosm Infrastructure (LMI),WCL - WasserCluster Lunz,Austria,Europe,"1) WCL – WasserCluster Lunz Dr. Carl Kupelwieser Promenade 5 A-3293 Lunz am See @@ -3181,7 +3181,7 @@ https://mesocosm.org/mesocosm/lunz-mesocosm-infrastructure-lmi/,Lunz Mesocosm In -","['http://mesocosm.org/wp-content/uploads/2017/02/Ptacnik-Lunz_400-300x226.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Kainz_mesocosms_400-300x224.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/HyTEC_1_400px-300x300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/HyTEC_2_400px-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/HyTEC_3_400px-296x300.jpg']",,,,"['47.8598408', '15.030520']","{'coordinates': ['47.8598408', '15.030520']}" +","['http://mesocosm.org/wp-content/uploads/2017/02/Ptacnik-Lunz_400-300x226.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Kainz_mesocosms_400-300x224.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/HyTEC_1_400px-300x300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/HyTEC_2_400px-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/HyTEC_3_400px-296x300.jpg']",,,,"['47.8598408', '15.030520']","{'coordinates': ['47.8598408', '15.030520']}" https://mesocosm.org/mesocosm/shear-turbulence-resuspension-mesocosm-sturm-facility/,Shear TUrbulence Resuspension Mesocosm (STURM) facility,The University of Baltimore (UBalt),United States of America,North America,"UBalt STURM facility located at: Patuxent Environmental and Aquatic Research Laboratory (PEARL), Morgan State University, @@ -3218,7 +3218,7 @@ turbidity monitoring temperature monitoring ","No lodging -",,,,,,,"['38.39364902663247', '-76.50512446172259']","{'coordinates': ['38.39364902663247', '-76.50512446172259']}" +",,,,,,,"['38.39364902663247', '-76.50512446172259']","{'coordinates': ['38.39364902663247', '-76.50512446172259']}" https://mesocosm.org/mesocosm/the-river-laboratory-heated-pond-mesocosms/,The River Laboratory heated pond mesocosms,Queen Mary University of London,United Kingdom,Europe,"QMUL Mile End Road London E1 4NS @@ -3273,7 +3273,7 @@ Foto credit: Yizhu Zhu -","['http://mesocosm.org/wp-content/uploads/2018/11/Ponds-1-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/Ponds-2-e1542903074614-768x1024.jpg']",,,,"['50.6666667', ' -2.1666666666666665']","{'coordinates': ['50.6666667', '-2.1666666666666665']}" +","['http://mesocosm.org/wp-content/uploads/2018/11/Ponds-1-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/Ponds-2-e1542903074614-768x1024.jpg']",,,,"['50.6666667', ' -2.1666666666666665']","{'coordinates': ['50.6666667', '-2.1666666666666665']}" https://mesocosm.org/mesocosm/exstream-system-germany/,ExStream System Germany,"University of Duisburg-Essen, Aquatic Ecosystem Research",Germany,Europe,"University of Duisburg-Essen, Aquatic Ecosystem Research Universitaetsstrasse 5 D-45141 Essen @@ -3331,7 +3331,7 @@ Figure credti: Jeremy (Jay) Piggott   -","['http://mesocosm.org/wp-content/uploads/2018/05/Beerman-et-al-2017-SOTEN-1024x892.png', 'http://mesocosm.org/wp-content/uploads/2018/05/Breitenbach1.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Felderbach2-452x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"['51.349722', ' 7.170583']","{'coordinates': ['51.349722', '7.170583']}" +","['http://mesocosm.org/wp-content/uploads/2018/05/Beerman-et-al-2017-SOTEN-1024x892.png', 'http://mesocosm.org/wp-content/uploads/2018/05/Breitenbach1.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Felderbach2-452x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"['51.349722', ' 7.170583']","{'coordinates': ['51.349722', '7.170583']}" https://mesocosm.org/mesocosm/albufera-biological-station/,Albufera Biological Station,University of Valencia,Spain,Europe,"Catedrático José Beltrán 2, 46980 Paterna (Spain) @@ -3379,7 +3379,7 @@ photo credits: Pablo Amador   photo credits: Pablo Amador   -","['http://mesocosm.org/wp-content/uploads/2023/12/Andreu-Rico-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/Andreu-Rico-768x1024.jpeg', 'http://mesocosm.org/wp-content/uploads/2023/12/Pablo-Amador-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/Pablo-Amador-2-768x1024.jpg']",,,,"['39.315582', ' -0.318789']","{'coordinates': ['39.315582', '-0.318789']}" +","['http://mesocosm.org/wp-content/uploads/2023/12/Andreu-Rico-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/Andreu-Rico-768x1024.jpeg', 'http://mesocosm.org/wp-content/uploads/2023/12/Pablo-Amador-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/Pablo-Amador-2-768x1024.jpg']",,,,"['39.315582', ' -0.318789']","{'coordinates': ['39.315582', '-0.318789']}" https://mesocosm.org/mesocosm/mobicos-mobile-aquatic-mesocosm/,MOBICOS - Mobile Aquatic Mesocosm,Helmholtz Zentrum für Umweltforschung-UFZ,Germany,Europe,"Helmholtz Zentrum für Umweltforschung-UFZ Brückstr. 3a 39114 Magdeburg @@ -3416,7 +3416,7 @@ In the MOBICOS-container scientists can experimentally comparare the growth of m -","['http://mesocosm.org/wp-content/uploads/2017/05/Mobicos_container500px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Muschelaquarien_200px.jpg']",,,,"['52.1205333', '11.627623699999958']","{'coordinates': ['52.1205333', '11.627623699999958']}" +","['http://mesocosm.org/wp-content/uploads/2017/05/Mobicos_container500px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Muschelaquarien_200px.jpg']",,,,"['52.1205333', '11.627623699999958']","{'coordinates': ['52.1205333', '11.627623699999958']}" https://mesocosm.org/mesocosm/igb-lakelab/,IGB LakeLab,Leibniz-Institute for Freshwater Ecology and Inland Fisheries (IGB),Germany,Europe,"Leibniz-Institute for Freshwater Ecology and Inland Fisheries (IGB) Müggelseedamm 310 12587 Berlin @@ -3446,7 +3446,7 @@ a height-adjustable water recirculation system with a perforated ring, rising c ","http://www.lake-lab.de http://www.seelabor.de/ ","Schematic diagram of the LakeLab in Lake Stechlin, northeastern Germany Aerial photograph of the LakeLab in Lake Stechlin Photo credit: HTW Dresden-Oczipka Photo credit: P. Casper, IGB -","['http://mesocosm.org/wp-content/uploads/2017/02/Stechlin_DE_graphics_400px-300x272.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Areal_photo_©HTWDresden-Oczipka_400px-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/lakelab_map-300x111.jpg']",,,,"['53.1520282', '13.0233035']","{'coordinates': ['53.1520282', '13.0233035']}" +","['http://mesocosm.org/wp-content/uploads/2017/02/Stechlin_DE_graphics_400px-300x272.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Areal_photo_©HTWDresden-Oczipka_400px-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/lakelab_map-300x111.jpg']",,,,"['53.1520282', '13.0233035']","{'coordinates': ['53.1520282', '13.0233035']}" https://mesocosm.org/mesocosm/center-for-coastal-environmental-health-and-biomolecular-research-ccehbr/,Center for Coastal Environmental Health and Biomolecular Research-CCEHBR,National Oceanic and Atmospheric Administration Center - NOAA,USA,North-America,"National Oceanic and Atmospheric Administration Center – NOAA ","Dr. Mike Fulton Please login or request access to view contact information. @@ -3480,7 +3480,7 @@ Mesocosm installation -","['http://mesocosm.org/wp-content/uploads/2017/05/Cherleston_meso3.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Charleston-mesocosms.jpg']",,,,"['32.7524467', '-79.8986098']","{'coordinates': ['32.7524467', '-79.8986098']}" +","['http://mesocosm.org/wp-content/uploads/2017/05/Cherleston_meso3.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Charleston-mesocosms.jpg']",,,,"['32.7524467', '-79.8986098']","{'coordinates': ['32.7524467', '-79.8986098']}" https://mesocosm.org/mesocosm/archipelago-benthic-mesocosm-network/,Archipelago Benthic Mesocosm Network,Åbo Akademi University,Finland,Europe,"Henrikinkatu 2, 20500 Åbo/Turku, Finland @@ -3531,7 +3531,7 @@ programmable climate simulation (GHL) ","https://www.abo.fi/en/emb-research-infrastructure/mesocosms/ https://pansch-research.com/?page_id=1592 ","Korpoström mesocosm tanks are equipped with constant flow and circulation of seawater from the adjacent bay. Electrical cabinets currently provide the possibility for monitoring and manipulation of seawater temperature. Seagrass shoots (upper left panel) are planted into separate sediment trays, photo credits: Christian Pansch Hattich Korpoström mesocosm system located at the Skärgårdscentrum Korpoström, Finland. 20 600L tanks receive seawater from the adjacent bay, photo credits: Christian Pansch-Hattich Husö mesocosm system located at Husö Biological Station, Åland, Finland. Seawater temperature monitoring and manipulation is achieved through Aqua Medic and GHL controlling units, as well as Aqua Medic cooling and Schego heading devices. photo credits: Christian Pansch-Hattich Husö mesocosm system located at Husö Biological Station, Åland, Finland. 20 600L tanks receive a flow-through of seawater from the adjacent bay. Christian Pansch-Hattich -","['http://mesocosm.org/wp-content/uploads/2024/07/3_small-1024x530.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/2_small-1024x567.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/5_small-1024x565.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/4_small-1024x560.jpg']",,,,"['60.1102778', '21.598055555555554']","{'coordinates': ['60.1102778', '21.598055555555554']}" +","['http://mesocosm.org/wp-content/uploads/2024/07/3_small-1024x530.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/2_small-1024x567.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/5_small-1024x565.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/4_small-1024x560.jpg']",,,,"['60.1102778', '21.598055555555554']","{'coordinates': ['60.1102778', '21.598055555555554']}" https://mesocosm.org/mesocosm/archipelago-benthic-mesocosm-network/,Archipelago Benthic Mesocosm Network,Åbo Akademi University,Finland,Europe,"Henrikinkatu 2, 20500 Åbo/Turku, Finland @@ -3582,7 +3582,7 @@ programmable climate simulation (GHL) ","https://www.abo.fi/en/emb-research-infrastructure/mesocosms/ https://pansch-research.com/?page_id=1592 ","Korpoström mesocosm tanks are equipped with constant flow and circulation of seawater from the adjacent bay. Electrical cabinets currently provide the possibility for monitoring and manipulation of seawater temperature. Seagrass shoots (upper left panel) are planted into separate sediment trays, photo credits: Christian Pansch Hattich Korpoström mesocosm system located at the Skärgårdscentrum Korpoström, Finland. 20 600L tanks receive seawater from the adjacent bay, photo credits: Christian Pansch-Hattich Husö mesocosm system located at Husö Biological Station, Åland, Finland. Seawater temperature monitoring and manipulation is achieved through Aqua Medic and GHL controlling units, as well as Aqua Medic cooling and Schego heading devices. photo credits: Christian Pansch-Hattich Husö mesocosm system located at Husö Biological Station, Åland, Finland. 20 600L tanks receive a flow-through of seawater from the adjacent bay. Christian Pansch-Hattich -","['http://mesocosm.org/wp-content/uploads/2024/07/3_small-1024x530.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/2_small-1024x567.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/5_small-1024x565.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/4_small-1024x560.jpg']",,,,"['60.2794444', '19.83138888888889']","{'coordinates': ['60.2794444', '19.83138888888889']}" +","['http://mesocosm.org/wp-content/uploads/2024/07/3_small-1024x530.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/2_small-1024x567.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/5_small-1024x565.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/4_small-1024x560.jpg']",,,,"['60.2794444', '19.83138888888889']","{'coordinates': ['60.2794444', '19.83138888888889']}" https://mesocosm.org/mesocosm/syke-mrc-marine-research-centre-mesocosm-facility/,SYKE-MRC (Marine Research Centre) Mesocosm Facility,Marine Research Centre,Finland,Europe,"Marine Research Centre (MRC) Finnish Environment Institute SYKE P.O.Box 140 @@ -3621,7 +3621,7 @@ SYKE-MRC field mesocosm work at Tvärminne -","['http://mesocosm.org/wp-content/uploads/2017/02/plankton-tower-153x300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['60.203843', '24.9617237']","{'coordinates': ['60.203843', '24.9617237']}" +","['http://mesocosm.org/wp-content/uploads/2017/02/plankton-tower-153x300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['60.203843', '24.9617237']","{'coordinates': ['60.203843', '24.9617237']}" https://mesocosm.org/mesocosm/uib-mesocosm-centre-university-of-bergen-mesocosm-centre/,UiB Mesocosm Centre (University of Bergen Mesocosm Centre),University of Bergen (UiB),Norway,Europe,"University of Bergen (UiB) Department of Biology PO-Box 7803 @@ -3667,7 +3667,7 @@ Fig.2 Land-based mesocosms (Photo: Stella A Berger) Nutrient composition, add/remove mesozooplankton, CO2/pH Land based tanks Nutrient composition, add/remove mesozooplankton CO2/pH, salinity, adjust light and temperature -","['60.2695262', '5.2234965']","{'coordinates': ['60.2695262', '5.2234965']}" +","['60.2695262', '5.2234965']","{'coordinates': ['60.2695262', '5.2234965']}" https://mesocosm.org/mesocosm/marine-ecosystems-research-laboratory-merl/,Marine Ecosystems Research Laboratory - MERL,University of Rhode Island,USA,North-America,"University of Rhode Island ","Prof. Candace Oviatt Please login or request access to view contact information. @@ -3713,7 +3713,7 @@ Schema of the MERL construction -","['http://mesocosm.org/wp-content/uploads/2017/05/merl_300.gif', 'http://mesocosm.org/wp-content/uploads/2017/05/Narragansett-US-RIMERL-deck_400.gif', 'http://mesocosm.org/wp-content/uploads/2017/05/Narragansett-US-RImerltankpic5_400.jpg']",,,,"['41.49175', '-71.4207629']","{'coordinates': ['41.49175', '-71.4207629']}" +","['http://mesocosm.org/wp-content/uploads/2017/05/merl_300.gif', 'http://mesocosm.org/wp-content/uploads/2017/05/Narragansett-US-RIMERL-deck_400.gif', 'http://mesocosm.org/wp-content/uploads/2017/05/Narragansett-US-RImerltankpic5_400.jpg']",,,,"['41.49175', '-71.4207629']","{'coordinates': ['41.49175', '-71.4207629']}" https://mesocosm.org/mesocosm/artificial-stream-and-pond-system-fsa/,Artificial Stream and Pond System (FSA),German Environment Agency,Germany,Europe,"German Environment Agency ","Ralf Schmidt Please login or request access to view contact information. @@ -3755,7 +3755,7 @@ Outdoor streams © Umweltbundesamt -","['http://mesocosm.org/wp-content/uploads/2017/02/Berlin_Marienfelde_aussen.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Berlin-Marienfelde_aussenan-300x185.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Berlin_Marienfelde_rinne_aus.jpg']",,,,"['52.4107352', '13.3756523']","{'coordinates': ['52.4107352', '13.3756523']}" +","['http://mesocosm.org/wp-content/uploads/2017/02/Berlin_Marienfelde_aussen.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Berlin-Marienfelde_aussenan-300x185.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Berlin_Marienfelde_rinne_aus.jpg']",,,,"['52.4107352', '13.3756523']","{'coordinates': ['52.4107352', '13.3756523']}" https://mesocosm.org/mesocosm/the-river-laboratory-experimental-stream-channel-mesocosms/,The River Laboratory experimental stream channel mesocosms,Queen Mary University of London,United Kingdom,Europe,"QMUL Mile End Road London E1 4NS @@ -3820,7 +3820,7 @@ Foto credit: Iwan Jones   -","['http://mesocosm.org/wp-content/uploads/2018/11/Streams-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/Streams-4-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/Streams-1-1024x768.jpg']",,,,"['50.6666667', ' -2.1833330555555555']","{'coordinates': ['50.6666667', '-2.1833330555555555']}" +","['http://mesocosm.org/wp-content/uploads/2018/11/Streams-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/Streams-4-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/Streams-1-1024x768.jpg']",,,,"['50.6666667', ' -2.1833330555555555']","{'coordinates': ['50.6666667', '-2.1833330555555555']}" https://mesocosm.org/mesocosm/au-lake-mesocosm-warming-experiment-lmwe/,AU Lake Mesocosm Warming Experiment (LMWE),Aarhus University (AU),Denmark,Europe,"Aarhus University (AU) Nordre Ringgade 1 8000 Aarhus C @@ -3854,7 +3854,7 @@ Mesocosm tanks in Silkeborg, DK -","['http://mesocosm.org/wp-content/uploads/2017/02/silkeborg_mesocosm_schema-300x210.png', 'http://mesocosm.org/wp-content/uploads/2017/02/silkeborg_mesocosm-300x223.png']",,,,"['56.244846', '9.529916']","{'coordinates': ['56.244846', '9.529916']}" +","['http://mesocosm.org/wp-content/uploads/2017/02/silkeborg_mesocosm_schema-300x210.png', 'http://mesocosm.org/wp-content/uploads/2017/02/silkeborg_mesocosm-300x223.png']",,,,"['56.244846', '9.529916']","{'coordinates': ['56.244846', '9.529916']}" https://mesocosm.org/mesocosm/awri-mesocosm-facility/,AWRI mesocosm facility,"Annis Water Resources Institute, Grand Valley State University",USA,North America,"740 West Shoreline Drive Muskegon, Michigan 49441 @@ -3909,7 +3909,7 @@ Photo credits: AWRI GVSU -","['http://mesocosm.org/wp-content/uploads/2022/09/Full_field-station_2.1-683x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2022/09/mesocosm.1-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2022/09/P3080003.jpg']",,,,"['43.224194', '-86.235809']","{'coordinates': ['43.224194', '-86.235809']}" +","['http://mesocosm.org/wp-content/uploads/2022/09/Full_field-station_2.1-683x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2022/09/mesocosm.1-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2022/09/P3080003.jpg']",,,,"['43.224194', '-86.235809']","{'coordinates': ['43.224194', '-86.235809']}" https://mesocosm.org/mesocosm/gropello-21026-gaviratevarese/,"Gropello, 21026 Gavirate/Varese",Institut Dr. Nowak (a),Italy,Europe,"Institut Dr. Nowak (a) Abteilung Limnologie Mayenbrook 1 @@ -3966,7 +3966,7 @@ Location of Lago di Varese: Latitude 45.818369; Longitude 8.738972 -","['http://mesocosm.org/wp-content/uploads/2017/05/Lago_di_Varese_1_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lago_di_Varese_2_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lago_di_Varese_construction_300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/LagodiVarese_300.png']",,,,"['45.799026', '8.7300945']","{'coordinates': ['45.799026', '8.7300945']}" +","['http://mesocosm.org/wp-content/uploads/2017/05/Lago_di_Varese_1_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lago_di_Varese_2_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lago_di_Varese_construction_300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/LagodiVarese_300.png']",,,,"['45.799026', '8.7300945']","{'coordinates': ['45.799026', '8.7300945']}" https://mesocosm.org/mesocosm/exstream-system-new-zealand/,ExStream System New Zealand,"University of Otago, Department of Zoology",New Zealand,Australasia,"340 Great King St Dunedin 9054 New Zealand @@ -4030,7 +4030,7 @@ Figure credit: Jeremy (Jay) Piggott ​   -","['http://mesocosm.org/wp-content/uploads/2018/10/Piggott-et-al.-2015-Global-Change-Biology-21-206-222.-959x1024.png', 'http://mesocosm.org/wp-content/uploads/2018/10/Kauru-ExStream-Under-the-Rainbow-1024x589.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/ExStream-mesocosms-960x1024.png', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"['-45.06337', ' 170.44303']","{'coordinates': ['-45.06337', '170.44303']}" +","['http://mesocosm.org/wp-content/uploads/2018/10/Piggott-et-al.-2015-Global-Change-Biology-21-206-222.-959x1024.png', 'http://mesocosm.org/wp-content/uploads/2018/10/Kauru-ExStream-Under-the-Rainbow-1024x589.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/ExStream-mesocosms-960x1024.png', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"['-45.06337', ' 170.44303']","{'coordinates': ['-45.06337', '170.44303']}" https://mesocosm.org/mesocosm/mesocosms-experimental-garden-radboud-university/,Mesocosms – experimental garden Radboud University,Radboud University,Netherlands,Europe,"Comeniuslaan 4, 6525 HP Nijmegen "," Sarian Kosten Please login or request access to view contact information. @@ -4070,7 +4070,7 @@ Photo credit: Sarian Kosten -","['http://mesocosm.org/wp-content/uploads/2019/03/Radboud_mesocosm1-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Radboud_mesocosm2-300x169.jpg']",,,,"['51.822777', '5.8733333']","{'coordinates': ['51.822777', '5.8733333']}" +","['http://mesocosm.org/wp-content/uploads/2019/03/Radboud_mesocosm1-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Radboud_mesocosm2-300x169.jpg']",,,,"['51.822777', '5.8733333']","{'coordinates': ['51.822777', '5.8733333']}" https://mesocosm.org/mesocosm/hungarian-pond-network/,Hungarian Pond Network,Centre for Ecological Research,Hungary,Europe,"Centre for Ecological Research H-1113 Budapest, Karolina út 29. Hungary @@ -4104,7 +4104,7 @@ A mesocosm at the Fülöpháza HPN facility. (Photo credit: Csaba Vad) The Vácrátót HPN mesocosm facility during winter. (Photo credit: Csilla Laskai) A mesocosm at the Zánka facility. (Phto credit: Csilla Laskai)   -","['http://mesocosm.org/wp-content/uploads/2024/01/Photo-1.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-2-1024x461.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/photo-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-4-1024x768.jpg']",,,,"['47.705277833333334', '19.228137999999998']","{'coordinates': ['47.705277833333334', '19.228137999999998']}" +","['http://mesocosm.org/wp-content/uploads/2024/01/Photo-1.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-2-1024x461.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/photo-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-4-1024x768.jpg']",,,,"['47.705277833333334', '19.228137999999998']","{'coordinates': ['47.705277833333334', '19.228137999999998']}" https://mesocosm.org/mesocosm/hungarian-pond-network/,Hungarian Pond Network,Centre for Ecological Research,Hungary,Europe,"Centre for Ecological Research H-1113 Budapest, Karolina út 29. Hungary @@ -4138,7 +4138,7 @@ A mesocosm at the Fülöpháza HPN facility. (Photo credit: Csaba Vad) The Vácrátót HPN mesocosm facility during winter. (Photo credit: Csilla Laskai) A mesocosm at the Zánka facility. (Phto credit: Csilla Laskai)   -","['http://mesocosm.org/wp-content/uploads/2024/01/Photo-1.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-2-1024x461.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/photo-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-4-1024x768.jpg']",,,,"['46.870555555555555', '19.422222222222224']","{'coordinates': ['46.870555555555555', '19.422222222222224']}" +","['http://mesocosm.org/wp-content/uploads/2024/01/Photo-1.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-2-1024x461.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/photo-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-4-1024x768.jpg']",,,,"['46.870555555555555', '19.422222222222224']","{'coordinates': ['46.870555555555555', '19.422222222222224']}" https://mesocosm.org/mesocosm/hungarian-pond-network/,Hungarian Pond Network,Centre for Ecological Research,Hungary,Europe,"Centre for Ecological Research H-1113 Budapest, Karolina út 29. Hungary @@ -4172,7 +4172,7 @@ A mesocosm at the Fülöpháza HPN facility. (Photo credit: Csaba Vad) The Vácrátót HPN mesocosm facility during winter. (Photo credit: Csilla Laskai) A mesocosm at the Zánka facility. (Phto credit: Csilla Laskai)   -","['http://mesocosm.org/wp-content/uploads/2024/01/Photo-1.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-2-1024x461.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/photo-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-4-1024x768.jpg']",,,,"['46.88', '17.66861111111111']","{'coordinates': ['46.88', '17.66861111111111']}" +","['http://mesocosm.org/wp-content/uploads/2024/01/Photo-1.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-2-1024x461.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/photo-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-4-1024x768.jpg']",,,,"['46.88', '17.66861111111111']","{'coordinates': ['46.88', '17.66861111111111']}" https://mesocosm.org/mesocosm/hungarian-pond-network/,Hungarian Pond Network,Centre for Ecological Research,Hungary,Europe,"Centre for Ecological Research H-1113 Budapest, Karolina út 29. Hungary @@ -4206,7 +4206,7 @@ A mesocosm at the Fülöpháza HPN facility. (Photo credit: Csaba Vad) The Vácrátót HPN mesocosm facility during winter. (Photo credit: Csilla Laskai) A mesocosm at the Zánka facility. (Phto credit: Csilla Laskai)   -","['http://mesocosm.org/wp-content/uploads/2024/01/Photo-1.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-2-1024x461.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/photo-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-4-1024x768.jpg']",,,,"['47.603611111111114', '21.3575']","{'coordinates': ['47.603611111111114', '21.3575']}" +","['http://mesocosm.org/wp-content/uploads/2024/01/Photo-1.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-2-1024x461.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/photo-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-4-1024x768.jpg']",,,,"['47.603611111111114', '21.3575']","{'coordinates': ['47.603611111111114', '21.3575']}" https://mesocosm.org/mesocosm/marine-plant-mesocosm-system/,Marine Plant Mesocosm System,CCMAR – Centre of Marine Sciences,Portugal,Europe,"Universidade do Algarve Campus de Gambelas, Ed.7 8005-139 Faro @@ -4254,7 +4254,7 @@ Photo credit: João Silva -","['http://mesocosm.org/wp-content/uploads/2018/05/CCMAR_mesocosm_2-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/CCMAR_mesocosm_1-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/CCMAR_mesocosm_3.jpg']",,,,"['37.006', ' -7.966']","{'coordinates': ['37.006', '-7.966']}" +","['http://mesocosm.org/wp-content/uploads/2018/05/CCMAR_mesocosm_2-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/CCMAR_mesocosm_1-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/CCMAR_mesocosm_3.jpg']",,,,"['37.006', ' -7.966']","{'coordinates': ['37.006', '-7.966']}" https://mesocosm.org/mesocosm/exstream-brazil/,ExStream Brazil,Universidade Federal do ABC (Federal University of ABC),Brazil,South America,"Av. dos Estados, 5001, B. Santa Terezinha, Santo André, SP, Brazil. CEP 09210-580 ","Adjunct Professor Ricardo Hideo Taniwaki Please login or request access to view contact information. @@ -4277,7 +4277,7 @@ The Experimental Stream mesocosm network (ExStream) comprises replicate installa >15 publications in scientific journals by C.D. Matthaei, J. J Piggott and coauthors (https://www.otago.ac.nz/zoology/staff/matthaei.html) Blog post: https://jappliedecologyblog.wordpress.com/2015/07/03/exstream-study-assesses-stream-ecosystem-functioning-the-effects-of-climate-warming-multiple-agricultural-stressors/ Short video about ExStream System research: https://vimeo.com/243219546 -",,,,,,"['-23.060634', ' -48.630102']","{'coordinates': ['-23.060634', '-48.630102']}" +",,,,,,"['-23.060634', ' -48.630102']","{'coordinates': ['-23.060634', '-48.630102']}" https://mesocosm.org/mesocosm/mesocosm-facility-at-umea-marine-sciences-center-mf-umsc/,Mesocosm Facility at Umeå Marine Sciences Center (MF-UMSC),Umeå Universitet (UmU),Sweden,Europe,"Umeå University (UmU)SE-90187 Umeå SWEDEN http://www.umf.umu.se/english/?languageId=1 @@ -4358,7 +4358,7 @@ MF-UMSC outdoor; Photo: K. Viklund   -","['http://mesocosm.org/wp-content/uploads/2017/03/Indoor-polyethylen-mesocosms.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/Tanks-with-light-and-temperature-control.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/ice-tanks_1-300x199.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/DSC_1798-300x199.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/DSC_1801-300x199.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/INDOOR-300x199.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/OUTDOOR-300x199.jpg']",,,,"['63.5678349', '19.8206221']","{'coordinates': ['63.5678349', '19.8206221']}" +","['http://mesocosm.org/wp-content/uploads/2017/03/Indoor-polyethylen-mesocosms.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/Tanks-with-light-and-temperature-control.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/ice-tanks_1-300x199.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/DSC_1798-300x199.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/DSC_1801-300x199.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/INDOOR-300x199.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/OUTDOOR-300x199.jpg']",,,,"['63.5678349', '19.8206221']","{'coordinates': ['63.5678349', '19.8206221']}" https://mesocosm.org/mesocosm/alpstream-eco-hydraulic-flumes/,ALPSTREAM ECO-HYDRAULIC FLUMES,ALPSTREAM – Alpine Stream Research Center/MONVISO PARK,Italy,Europe,"Frazione S. Antonio 17, I-12030 Sant’Antonio Ostana (CN)   @@ -4429,7 +4429,7 @@ from window of the ALPSTREAM lab, photo credits: Elisa Falasco Guesthouse, photo credits: VisoaViso cooperative Indoor space of the ALPSTREAM lab, photo credit: Stefano Fenoglio Ostana landscape, photo credits: Stefano Fenoglio -","['http://mesocosm.org/wp-content/uploads/2023/03/Flumes-1024x413.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/aerial-view-flumes-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/from-the-window-of-the-ALPSTREAM-lab.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/guesthouse.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/indoor-space-of-the-ALPSTREAM-lab.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/Ostana-landscape.1.9MB-1024x768.jpg']",,,,"['44.6931944', ' 7.176777777777778']","{'coordinates': ['44.6931944', '7.176777777777778']}" +","['http://mesocosm.org/wp-content/uploads/2023/03/Flumes-1024x413.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/aerial-view-flumes-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/from-the-window-of-the-ALPSTREAM-lab.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/guesthouse.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/indoor-space-of-the-ALPSTREAM-lab.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/Ostana-landscape.1.9MB-1024x768.jpg']",,,,"['44.6931944', ' 7.176777777777778']","{'coordinates': ['44.6931944', '7.176777777777778']}" https://mesocosm.org/mesocosm/yeosu-mesocosm-system/,Yeosu Mesocosm System,"Fisheries Science Institute, Chonnam National University",Republic of Korea,Asia,"50 Daehak-ro, Yeosu, Jeonnam 59626, Republic of Korea ","Prof. Ihn-Sil Kwak / Dr. Hyunbin Jo Please login or request access to view contact information. @@ -4466,7 +4466,7 @@ Reconstruction plan -","['http://mesocosm.org/wp-content/uploads/2019/03/Yeosu-Mesocosm-System-1-300x226.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Yeosu-Mesocosm-System-2-300x227.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Yeosu-Mesocosm-System-3-255x300.jpeg']",,,,"['34.627472', '127.72033']","{'coordinates': ['34.627472', '127.72033']}" +","['http://mesocosm.org/wp-content/uploads/2019/03/Yeosu-Mesocosm-System-1-300x226.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Yeosu-Mesocosm-System-2-300x227.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Yeosu-Mesocosm-System-3-255x300.jpeg']",,,,"['34.627472', '127.72033']","{'coordinates': ['34.627472', '127.72033']}" https://mesocosm.org/mesocosm/levend-lab/,Levend Lab,Leiden University,Netherlands,Europe,"Leiden University Institute of Environmental Sciences PO Box 9518 @@ -4524,7 +4524,7 @@ Photo credit: -","['http://mesocosm.org/wp-content/uploads/2018/10/1-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/2-1024x768.jpg']",,,,"['52.170726', ' 4.451855']","{'coordinates': ['52.170726', '4.451855']}" +","['http://mesocosm.org/wp-content/uploads/2018/10/1-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/2-1024x768.jpg']",,,,"['52.170726', ' 4.451855']","{'coordinates': ['52.170726', '4.451855']}" https://mesocosm.org/mesocosm/lake-baoan-field-station-of-experimental-limnological-research/,Lake Bao’an Field Station of Experimental Limnological Research,"State Key Laboratory of Freshwater Ecology and Biotechnology, Institute of Hydrobiology, Chinese Academy of Sciences",China,Asia,"No. 7 South Donghu Road,  Wuchang District, Wuhan 430072, Hubei Province, China ","Hai-Jun Wang Please login or request access to view contact information. @@ -4577,7 +4577,7 @@ Ponds for nitrogen pollution experiments -","['http://mesocosm.org/wp-content/uploads/2019/03/The-aerial-view-of-the-experimental-station-300x169.png', 'http://mesocosm.org/wp-content/uploads/2019/03/cement-aquarium-experimental-system-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Ponds-for-eutrophication-experiments-300x177.png', 'http://mesocosm.org/wp-content/uploads/2019/03/Ponds-for-nitrogen-pollution-experiments-300x189.png']",,,,"['30.28805', '114.72916']","{'coordinates': ['30.28805', '114.72916']}" +","['http://mesocosm.org/wp-content/uploads/2019/03/The-aerial-view-of-the-experimental-station-300x169.png', 'http://mesocosm.org/wp-content/uploads/2019/03/cement-aquarium-experimental-system-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Ponds-for-eutrophication-experiments-300x177.png', 'http://mesocosm.org/wp-content/uploads/2019/03/Ponds-for-nitrogen-pollution-experiments-300x189.png']",,,,"['30.28805', '114.72916']","{'coordinates': ['30.28805', '114.72916']}" https://mesocosm.org/mesocosm/tihany-outdoor-mesocosm-hungary/,Tihany Outdoor Mesocosm (Hungary),"Balaton Limnological Research Institute, Eötvös Loránd Research Network",Hungary,Europe,"Klebelsberg Kuno 3, 8237-Tihany, Hungary @@ -4638,7 +4638,7 @@ Foto credit: Ferenc Jordan ​   -","['http://mesocosm.org/wp-content/uploads/2018/11/Tihany-5-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/IMG_20181024_094852-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/IMG_20181024_104918-1024x768.jpg']",,,,"['46.9125', ' 17.893333333333334']","{'coordinates': ['46.9125', '17.893333333333334']}" +","['http://mesocosm.org/wp-content/uploads/2018/11/Tihany-5-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/IMG_20181024_094852-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/IMG_20181024_104918-1024x768.jpg']",,,,"['46.9125', ' 17.893333333333334']","{'coordinates': ['46.9125', '17.893333333333334']}" https://mesocosm.org/mesocosm/sites-aquanet-svartberget-research-station/,SITES AquaNet – Svartberget Research Station,SITES and Swedish University of Agricultural Sciences,Sweden,Europe,"Sveriges lantbruksuniversitet (SLU) Unit for Field-based Forest Research Svartberget Research Station @@ -4680,7 +4680,7 @@ Photo credti: Peder Blomkvist   -","['http://mesocosm.org/wp-content/uploads/2018/05/Svartberget_2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Svartberget_3-768x1024.jpg']",,,,"['64.143965', ' 19.455836']","{'coordinates': ['64.143965', '19.455836']}" +","['http://mesocosm.org/wp-content/uploads/2018/05/Svartberget_2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Svartberget_3-768x1024.jpg']",,,,"['64.143965', ' 19.455836']","{'coordinates': ['64.143965', '19.455836']}" https://mesocosm.org/mesocosm/cambridge-environmental-assessments-cea/,Cambridge Environmental Assessments (CEA),RSK ADAS Ltd,United Kingdom,Europe,"Cambridge Environmental Assessments, ADAS Boxworth, Cambridgeshire, CB23 4NN ","Dr Nadine Taylor Please login or request access to view contact information. @@ -4745,7 +4745,7 @@ Set-up of sloped mesocosms prior to a study (Credit: Cambridge Environmental Ass -","['http://mesocosm.org/wp-content/uploads/2019/03/Established-flat-bottomed-mesocosms-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Established-sloped-mesocosms-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Established-sloped-mesocosms-2-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Set-up-of-sloped-mesocosms-prior-to-a-study-300x225.jpg']",,,,"['52.252916', '-0.031916']","{'coordinates': ['52.252916', '-0.031916']}" +","['http://mesocosm.org/wp-content/uploads/2019/03/Established-flat-bottomed-mesocosms-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Established-sloped-mesocosms-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Established-sloped-mesocosms-2-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Set-up-of-sloped-mesocosms-prior-to-a-study-300x225.jpg']",,,,"['52.252916', '-0.031916']","{'coordinates': ['52.252916', '-0.031916']}" https://mesocosm.org/mesocosm/carl-von-ossietzky-university-oldenburg/,Planktotrons - Indoor Mesocosm Facility,Carl-von-Ossietzky University Oldenburg,Germany,Europe,"Carl-von-Ossietzky University Oldenburg Institute for Chemistry and Biology of the Marine Environment (ICBM) Schleusenstr. 1 @@ -4789,7 +4789,7 @@ Plankrtotrons in Wilhelmshaven -","['http://mesocosm.org/wp-content/uploads/2017/05/planktotrons_1_400.png', 'http://mesocosm.org/wp-content/uploads/2017/05/Planktotrons_2_400.png']",,,,"['53.5151', '8.146219999999971']","{'coordinates': ['53.5151', '8.146219999999971']}" +","['http://mesocosm.org/wp-content/uploads/2017/05/planktotrons_1_400.png', 'http://mesocosm.org/wp-content/uploads/2017/05/Planktotrons_2_400.png']",,,,"['53.5151', '8.146219999999971']","{'coordinates': ['53.5151', '8.146219999999971']}" https://mesocosm.org/mesocosm/kiel-indoor-benthokosmen-zur-simulation-von-umweltfluktuationen/,Kiel-Indoor-Benthocosms (KIBs),GEOMAR-Helmholtz Center for Ocean Research Kiel,Germany,Europe,"GEOMAR-Helmholtz Center for Ocean Research Kiel West shore campusDüsternbrooker Weg 20D-24105 Kiel East shore campusWischhofstr. 1-3D-24148 Kiel @@ -4841,7 +4841,7 @@ Graphic: Christian Pansch   -","['http://mesocosm.org/wp-content/uploads/2018/04/IMG_6896-e1523449384719-200x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2018/04/IMG_6905-e1523449507437-200x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2018/04/A-264x300.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/B-300x181.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/C-300x222.jpg']",,,,"['54.330034', ' 10.148140']","{'coordinates': ['54.330034', '10.148140']}" +","['http://mesocosm.org/wp-content/uploads/2018/04/IMG_6896-e1523449384719-200x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2018/04/IMG_6905-e1523449507437-200x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2018/04/A-264x300.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/B-300x181.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/C-300x222.jpg']",,,,"['54.330034', ' 10.148140']","{'coordinates': ['54.330034', '10.148140']}" https://mesocosm.org/mesocosm/metu-mesocosm-system/,METU Mesocosm System,Middle East Technical University (METU),Turkey,Europe,"Orta Doğu Teknik Üniversitesi (ODTÜ), Middle East Technical University (METU), Üniversiteler Mahallesi, Dumlupınar Bulvarı No:1 06800 Çankaya Ankara/TURKEY, 06800 ","Prof.Dr. Meryem Beklioğlu ","2011, 2012",,"water depth and nutrients (both TP and TN) @@ -4857,7 +4857,7 @@ https://mesocosm.org/mesocosm/metu-mesocosm-system/,METU Mesocosm System,Middle ",,,,"http://limnology.bio.metu.edu.tr "," Photo: METU-Limnology Labratory -",['http://mesocosm.org/wp-content/uploads/2017/02/METU-300x204.jpg'],,,,"['39.8897009', '32.7520139']","{'coordinates': ['39.8897009', '32.7520139']}" +",['http://mesocosm.org/wp-content/uploads/2017/02/METU-300x204.jpg'],,,,"['39.8897009', '32.7520139']","{'coordinates': ['39.8897009', '32.7520139']}" https://mesocosm.org/mesocosm/ceint-center-for-the-environmental-implications-of-nanotechnology/,CEINT-Center for the Environmental Implications of Nanotechnology,Duke University,USA,North-America,"Duke University 134 Chapel Drive Durham NC 27708 @@ -4892,7 +4892,7 @@ CEINT Mesocosm Facility   -","['http://mesocosm.org/wp-content/uploads/2017/05/Duke_mesocosms.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Duke_mesocosmsBPE.jpg']",,,,"['36.0241591', '-78.911455']","{'coordinates': ['36.0241591', '-78.911455']}" +","['http://mesocosm.org/wp-content/uploads/2017/05/Duke_mesocosms.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Duke_mesocosmsBPE.jpg']",,,,"['36.0241591', '-78.911455']","{'coordinates': ['36.0241591', '-78.911455']}" https://mesocosm.org/mesocosm/lake-mesocosms/,Lake Mesocosms,Ludwig-Maximilians-University (LMU) Munich,Germany,Europe,"Ludwig-Maximilians-University (LMU) Munich Department Biology II Aquatic Ecology @@ -4932,7 +4932,7 @@ Mesocosm installation – view of the bags under water (Photo: Stibor) -","['http://mesocosm.org/wp-content/uploads/2017/05/Seeon_1_400px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Seeon_2_400px.jpg']",,,,"['47.9745129', '12.46009749999996']","{'coordinates': ['47.9745129', '12.46009749999996']}" +","['http://mesocosm.org/wp-content/uploads/2017/05/Seeon_1_400px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Seeon_2_400px.jpg']",,,,"['47.9745129', '12.46009749999996']","{'coordinates': ['47.9745129', '12.46009749999996']}" https://mesocosm.org/mesocosm/mesodrome/,University of Antwerp MESODROME,University of Antwerp,Belgium,Europe,"University of Antwerp, Dep. Biology Universiteitsplein 1 2610 Wilrijk @@ -4973,7 +4973,7 @@ Credit: Eric Struyf -",['http://mesocosm.org/wp-content/uploads/2018/05/Mesodrome_tech-drawing-300x115.jpg'],,,,"['51.155424', ' 4.409210']","{'coordinates': ['51.155424', '4.409210']}" +",['http://mesocosm.org/wp-content/uploads/2018/05/Mesodrome_tech-drawing-300x115.jpg'],,,,"['51.155424', ' 4.409210']","{'coordinates': ['51.155424', '4.409210']}" https://mesocosm.org/mesocosm/estacion-de-ciencias-marinas-de-toralla-ecimat/,Estación de Ciencias Mariñas de Toralla (ECIMAT),University of Vigo,Spain,Europe,"Illa de Toralla E-36331 Coruxo Vigo @@ -5026,7 +5026,7 @@ Photo credits: Jose Gonzalez Fernandez   -","['http://mesocosm.org/wp-content/uploads/2018/04/5B25D5A7-B59A-480E-93EF-F72F6D49B420-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/FCDD4CA6-6509-4CFE-BE24-51C6D14BCC65-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/897C6409-336F-4357-9831-3D0F71827349-1024x768.jpg']",,,,"['42.201979', ' -8.798505']","{'coordinates': ['42.201979', '-8.798505']}" +","['http://mesocosm.org/wp-content/uploads/2018/04/5B25D5A7-B59A-480E-93EF-F72F6D49B420-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/FCDD4CA6-6509-4CFE-BE24-51C6D14BCC65-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/897C6409-336F-4357-9831-3D0F71827349-1024x768.jpg']",,,,"['42.201979', ' -8.798505']","{'coordinates': ['42.201979', '-8.798505']}" https://mesocosm.org/mesocosm/smart-ecolake/,Smart Ecolake,"Nanjing Institute of Geography and Limnology, Chinese Academy of Sciences (NIGLAS)",China,Asia,"73 East Beijing Road, Nanjing 210008, P.R.China @@ -5067,7 +5067,7 @@ automation for e.g. nutrient and water supplementation ",,"www.ecolake.net ","EcoSmart mesocosm facility  whole view, photo credits: Jianming Deng Mesocosm close up, photo credit: Jianming Deng -","['http://mesocosm.org/wp-content/uploads/2023/12/Whole-View_1.9MB-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/single-tank-1024x683.jpg']",,,,"['31.03', '120.42']","{'coordinates': ['31.03', '120.42']}" +","['http://mesocosm.org/wp-content/uploads/2023/12/Whole-View_1.9MB-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/single-tank-1024x683.jpg']",,,,"['31.03', '120.42']","{'coordinates': ['31.03', '120.42']}" https://mesocosm.org/mesocosm/imdea-water-institute/,IMDEA Water Institute,IMDEA Water Foundation,Spain,Europe,"IMDEA Water Institute Avenida Punto Com 2 PO Box 28805, Alcala de Henares @@ -5119,7 +5119,7 @@ Photo: Andreu Rico   -","['http://mesocosm.org/wp-content/uploads/2018/04/IMG_2170-300x181.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/20160519_121359-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/20170512_154035_resized-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/IMG-20170512-WA0010-300x169.jpg']",,,,"['40.5133474', ' -3.3386556000000382']","{'coordinates': ['40.5133474', '-3.3386556000000382']}" +","['http://mesocosm.org/wp-content/uploads/2018/04/IMG_2170-300x181.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/20160519_121359-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/20170512_154035_resized-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/IMG-20170512-WA0010-300x169.jpg']",,,,"['40.5133474', ' -3.3386556000000382']","{'coordinates': ['40.5133474', '-3.3386556000000382']}" https://mesocosm.org/mesocosm/experimental-streams-facility-esf/,Experimental Streams Facility (ESF),ICRA (Catalan Institute for Water Research),Spain,Europe,"ICRA Catalan Institute for Water Research Carrer Emili Grahit 101 17003 Girona @@ -5186,7 +5186,7 @@ Photo credit: Vicenç Acuña   -","['http://mesocosm.org/wp-content/uploads/2018/05/image003.jpg@01D3EBA2.451771B0.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/image002.jpg@01D3EBA2.451771B0.jpg']",,,,"['41.967303', ' 2.840650']","{'coordinates': ['41.967303', '2.840650']}" +","['http://mesocosm.org/wp-content/uploads/2018/05/image003.jpg@01D3EBA2.451771B0.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/image002.jpg@01D3EBA2.451771B0.jpg']",,,,"['41.967303', ' 2.840650']","{'coordinates': ['41.967303', '2.840650']}" https://mesocosm.org/mesocosm/aquatron-laboratory/,Aquatron Laboratory,Dalhousie University Life Sciences Centre,Canada,North-America,"Dalhousie University Life Sciences Centre 1355 Oxford Street PO BOX 15000 @@ -5259,4 +5259,103 @@ Aquatron Laboratory: Phytoplankton cultivation -","['http://mesocosm.org/wp-content/uploads/2017/05/aquatronS.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Aquatron-empty_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/halifax_pool_calltoaction.image_.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/featureslide.image_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron1_400.jpg']",,,,"['44.6356125', '-63.5944334']","{'coordinates': ['44.6356125', '-63.5944334']}" +","['http://mesocosm.org/wp-content/uploads/2017/05/aquatronS.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Aquatron-empty_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/halifax_pool_calltoaction.image_.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/featureslide.image_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron1_400.jpg']",,,,"['44.6356125', '-63.5944334']","{'coordinates': ['44.6356125', '-63.5944334']}" +,[TEST CASE] Aquatron Laboratory,Dalhousie University Life Sciences Centre,,North-America,"Dalhousie University Life Sciences Centre + 1355 Oxford Street + PO BOX 15000 + Halifax, Nova Scotia + Canada, B3H 4R2 +","John Batt +Please login or request access to view contact information. +",,,"temperature, stratification, light, etc. +","Animal behaviour, ballast water, flood containment, invasive species +"," + + + + + 44.6356125,-63.5944334 + +",,,"These world-class facilities are backed by our mechanical system, which can provide high quality, temperature controlled seawater and freshwater year round, as well as a professional team of both biologists and mechanical operators who are available to run the systems and help researchers. 16 wet labs. +",,"http://www.dal.ca/dept/aquatron.html +http://www.dal.ca/dept/aquatron/facilities/tower_tank.html +http://www.dal.ca/dept/aquatron/facilities/pool_tank.html +"," + + + + +Aquatron Laboratory in Halifax, Nova-Scotia, CA + + + + + + + + + + + +Aquatron laboratory: Pool tank + + + + + +Aquatron Laboratory: Tower tank sysem + + + + + +Aquatron Laboratory: Phytoplankton cultivation + + + + +","['http://mesocosm.org/wp-content/uploads/2017/05/aquatronS.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Aquatron-empty_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/halifax_pool_calltoaction.image_.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/featureslide.image_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron1_400.jpg']",,,,"['44.6356125', '-63.5944334']","{'coordinates': ['44.6356125', '-63.5944334']}" +https://mesocosm.org/mesocosm/imdea-water-institute/,[TEST CASE] IMDEA Water Institute,IMDEA Water Foundation,Spain,Europe,"IMDEA Water Institute +Avenida Punto Com 2 +PO Box 28805, Alcala de Henares +Madrid (Spain) +","Andreu Rico:  andreu.rico@imdea.org +Marco Vighi:  marco.vighi@imdea.org +",,,,"Environmental fate of chemicals and calculation of degradation rates +Assessment of the adverse effects of chemicals on several biological endpoints and derivation of safe environmental concentrations +Evaluation of the interaction between multiple stressors (chemical and non-chemical) on aquatic ecosystems +"," + + + + + 40.5133474, -3.3386556000000382 + +","We are mainly engaged on academic research projects but also open for collaboration with the regulatory and industry sectors. Please do not hesitate to contact us. +",,,"Can be arranged upon request +","http://water.imdea.org/ +","  + + + + +Photot: Michelle Jansen +  + + +Photo: Andreu Rico +  + + + + +Photo: Andreu Rico + + +Photo: Andreu Rico + + + + +  +","['http://mesocosm.org/wp-content/uploads/2018/04/IMG_2170-300x181.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/20160519_121359-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/20170512_154035_resized-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/IMG-20170512-WA0010-300x169.jpg']",,,,"['40.5133474', ' -3.3386556000000382']","{'coordinates': ['40.5133474', '-3.3386556000000382']}" \ No newline at end of file From 9c957e96087a3d25d80f147cb715be5297c14d86 Mon Sep 17 00:00:00 2001 From: andrei Date: Thu, 9 Oct 2025 12:45:57 +0200 Subject: [PATCH 055/149] feat: add the custom_title post parameter --- server/services/searchAQUANAVI.php | 1 + 1 file changed, 1 insertion(+) diff --git a/server/services/searchAQUANAVI.php b/server/services/searchAQUANAVI.php index 4ff05e805..ee74dbd80 100644 --- a/server/services/searchAQUANAVI.php +++ b/server/services/searchAQUANAVI.php @@ -20,6 +20,7 @@ $post_params["document_types"] = ["F"]; $post_params["sorting"] = "most-relevant"; $post_params["time_range"] = "user-defined"; +$post_params["custom_title"] = "aquatic mesocosm facilities"; // And some others... $params_array = ["from", "to", "document_types", "sorting", "min_descsize", "lang_id"]; From 463c3f0a09d567ad8371505f44e0cc15dabf322d Mon Sep 17 00:00:00 2001 From: andrei Date: Thu, 9 Oct 2025 15:11:33 +0200 Subject: [PATCH 056/149] feat: prefixes in documents abstracts --- .../workers/common/common/aquanavi/mapping.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/server/workers/common/common/aquanavi/mapping.py b/server/workers/common/common/aquanavi/mapping.py index f18e9c408..c7ca15cd1 100644 --- a/server/workers/common/common/aquanavi/mapping.py +++ b/server/workers/common/common/aquanavi/mapping.py @@ -19,6 +19,11 @@ "Photos of experiments/installations images", ] +def remove_trailing_dot(string): + if string and string.endswith('.'): + return string[:-1] + return string + def get_latitude_longitude(row): coordinates_string = str(row["Facility location(s) split"]).strip() @@ -90,14 +95,12 @@ def get_coverage(row): return result def get_abstract(row): - equipment = str(row["Equipment"]).strip() - description = str(row["Description of Facility"]).strip() - parameters = str(row["Controlled Parameters"]).strip() - - abstract_parts = [part for part in [description, equipment, parameters] if part and part.lower() != "nan"] - result = ". ".join(abstract_parts) + abstract_parts = [] + abstract_parts.append(f"Facility description: {remove_trailing_dot(str(row['Description of Facility']).strip())}" if row['Description of Facility'] else "Facility description: not available") + abstract_parts.append(f"Equipment: {remove_trailing_dot(str(row['Equipment']).strip())}" if row['Equipment'] else "Equipment: not available") + abstract_parts.append(f"Controlled parameters: {remove_trailing_dot(str(row['Controlled Parameters']).strip())}" if row['Controlled Parameters'] else "Controlled parameters: not available") - return result + return "; ".join(abstract_parts) def check_that_csv_file_exists(csv_path): if not csv_path.exists(): From 3548b39a040dce97899d5f55ec4b3fe579e35415 Mon Sep 17 00:00:00 2001 From: andrei Date: Thu, 9 Oct 2025 15:16:52 +0200 Subject: [PATCH 057/149] bugfix: an id for each document --- server/workers/common/common/aquanavi/mapping.py | 1 + 1 file changed, 1 insertion(+) diff --git a/server/workers/common/common/aquanavi/mapping.py b/server/workers/common/common/aquanavi/mapping.py index c7ca15cd1..ccd4335d0 100644 --- a/server/workers/common/common/aquanavi/mapping.py +++ b/server/workers/common/common/aquanavi/mapping.py @@ -130,6 +130,7 @@ def map_sample_data(): coverage = get_coverage(row) result.append({ + "id": url, "title": title, "identifier": url, "link": url, From 9d249f47b650ba67f171bbd75360b13eb98427f4 Mon Sep 17 00:00:00 2001 From: andrei Date: Fri, 10 Oct 2025 14:47:26 +0200 Subject: [PATCH 058/149] bugfix: abstract formatting when all parts are missed --- .../workers/common/common/aquanavi/mapping.py | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/server/workers/common/common/aquanavi/mapping.py b/server/workers/common/common/aquanavi/mapping.py index ccd4335d0..992ebf1f6 100644 --- a/server/workers/common/common/aquanavi/mapping.py +++ b/server/workers/common/common/aquanavi/mapping.py @@ -95,10 +95,29 @@ def get_coverage(row): return result def get_abstract(row): + count_of_not_available_parts = 0 abstract_parts = [] - abstract_parts.append(f"Facility description: {remove_trailing_dot(str(row['Description of Facility']).strip())}" if row['Description of Facility'] else "Facility description: not available") - abstract_parts.append(f"Equipment: {remove_trailing_dot(str(row['Equipment']).strip())}" if row['Equipment'] else "Equipment: not available") - abstract_parts.append(f"Controlled parameters: {remove_trailing_dot(str(row['Controlled Parameters']).strip())}" if row['Controlled Parameters'] else "Controlled parameters: not available") + + if (row['Description of Facility']): + abstract_parts.append(f"Facility description: {remove_trailing_dot(str(row['Description of Facility']).strip())}") + else: + count_of_not_available_parts += 1 + abstract_parts.append("Facility description: not available") + + if (row['Equipment']): + abstract_parts.append(f"Equipment: {remove_trailing_dot(str(row['Equipment']).strip())}") + else: + count_of_not_available_parts += 1 + abstract_parts.append("Equipment: not available") + + if (row['Controlled Parameters']): + abstract_parts.append(f"Controlled Parameters: {remove_trailing_dot(str(row['Controlled Parameters']).strip())}") + else: + count_of_not_available_parts += 1 + abstract_parts.append("Controlled Parameters: not available") + + if (count_of_not_available_parts == 3): + return "" return "; ".join(abstract_parts) From 5932dbbcdcdebdf56a95a64cca1563ea99a275b4 Mon Sep 17 00:00:00 2001 From: andrei Date: Fri, 10 Oct 2025 15:17:19 +0200 Subject: [PATCH 059/149] refactor: new columns and prefixes in the keywords --- .../workers/common/common/aquanavi/mapping.py | 63 +++- .../common/aquanavi/mesocosm_data_cleaned.csv | 353 ++++++++++++------ 2 files changed, 303 insertions(+), 113 deletions(-) diff --git a/server/workers/common/common/aquanavi/mapping.py b/server/workers/common/common/aquanavi/mapping.py index 992ebf1f6..7dc87a5b8 100644 --- a/server/workers/common/common/aquanavi/mapping.py +++ b/server/workers/common/common/aquanavi/mapping.py @@ -19,6 +19,31 @@ "Photos of experiments/installations images", ] +def process_string_column(row, name): + """ + Process the column name from DataFrame. + + Args: + row (pandas.Series): String DataFrame. + name (str): Name of a column that must be processed. + + Returns: + str: The processed string (parts separated by commas, or the original string), + or an empty string if the original value was empty. + """ + value = row[name] + + if value: + processed_string = str(value).strip() + + if "\n" in processed_string: + parts = [part.strip() for part in processed_string.split("\n") if part.strip()] + return ", ".join(parts) + else: + return processed_string + else: + return "" + def remove_trailing_dot(string): if string and string.endswith('.'): return string[:-1] @@ -121,6 +146,35 @@ def get_abstract(row): return "; ".join(abstract_parts) +def get_keywords(row): + keywords_parts = [] + + # Adding the "Specialist areas" + specialist_areas = process_string_column(row, "Specialist areas") + specialist_areas_without_trailing_dot = remove_trailing_dot(specialist_areas) + if specialist_areas_without_trailing_dot: + keywords_parts.append(specialist_areas_without_trailing_dot) + else: + keywords_parts.append("not available") + + # Adding the "Primary interests" + primary_interests = process_string_column(row, "Primary interests") + primary_interests_without_trailing_dot = remove_trailing_dot(primary_interests) + if primary_interests_without_trailing_dot: + keywords_parts.append(f"Primary interests: {primary_interests_without_trailing_dot}") + else: + keywords_parts.append("Primary interests: not available") + + # Adding the "Research Topics" + research_topics = process_string_column(row, "Research Topics") + research_topics_without_trailing_dot = remove_trailing_dot(research_topics) + if research_topics_without_trailing_dot: + keywords_parts.append(f"Research topics: {research_topics_without_trailing_dot}") + else: + keywords_parts.append("Research topics: not available") + + return "; ".join(keywords_parts) + def check_that_csv_file_exists(csv_path): if not csv_path.exists(): sys.exit(f"CSV does not exists: {csv_path}.") @@ -144,9 +198,6 @@ def map_sample_data(): title = str(row["Name"]).strip() if row["Name"] else "" url = str(row["url"]).strip() if row["url"] else "" image = row["Photos of experiments/installations images"] if row["Photos of experiments/installations images"] else "" - subject = str(row["Specialist areas"]).strip() if row["Specialist areas"] else "" - abstract = get_abstract(row) - coverage = get_coverage(row) result.append({ "id": url, @@ -161,9 +212,9 @@ def map_sample_data(): "oa_state": "", "published_in": "", "relation": image, - "paper_abstract": abstract, - "subject_orig": subject, - "coverage": coverage + "paper_abstract": get_abstract(row), + "subject_orig": get_keywords(row), + "coverage": get_coverage(row) }) return { "documents": result } \ No newline at end of file diff --git a/server/workers/common/common/aquanavi/mesocosm_data_cleaned.csv b/server/workers/common/common/aquanavi/mesocosm_data_cleaned.csv index 893563d2f..354bf571c 100644 --- a/server/workers/common/common/aquanavi/mesocosm_data_cleaned.csv +++ b/server/workers/common/common/aquanavi/mesocosm_data_cleaned.csv @@ -1,4 +1,4 @@ -url,Name,Legal name of organisation,Country,Continent,Organisation address,Primary contact information (PI),Years of Mesocosm Experiments,Description of Facility,Controlled Parameters,Research Topics,Facility location(s),Primary interests,Specialist areas,Equipment,Lodging,Source of Information,Photos of experiments/installations,Photos of experiments/installations images,Equipment images,Lodging images,Manipulations,Facility location(s) split,location_facilities +url,Name,Legal name of organisation,Country,Continent,Organisation address,Primary contact information (PI),Years of Mesocosm Experiments,Description of Facility,Controlled Parameters,Research Topics,Facility location(s),Primary interests,Specialist areas,Equipment,Lodging,Source of Information,Photos of experiments/installations,Photos of experiments/installations images,Equipment images,Lodging images,Manipulations,Facility location(s) split,location_facilities https://mesocosm.org/mesocosm/sites-aquanet-skogaryd-research-station/,SITES AquaNet – Skogaryd Research Station,SITES and Göteborg University,Sweden,Europe,"Göteborg University Inst. for Geosciences Guldhedsgatan 5a @@ -40,7 +40,7 @@ Photo credit: Leif Klemedtsson   -","['http://mesocosm.org/wp-content/uploads/2018/05/Skogaryd_2-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Skogaryd_1-1024x683.jpg']",,,,"['58.3712', ' 12.1613']","{'coordinates': ['58.3712', '12.1613']}" +","['http://mesocosm.org/wp-content/uploads/2018/05/Skogaryd_2-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Skogaryd_1-1024x683.jpg']",,,,"['58.3712', ' 12.1613']","{'coordinates': ['58.3712', '12.1613']}" https://mesocosm.org/mesocosm/university-koblenz-landau/,Landau Stream Mesocosm Facility (LSMF),University Koblenz-Landau,Germany,Europe,"University Koblenz-Landau Fortstraße 7 76829 Landau @@ -89,7 +89,7 @@ Stream mesocosm facility at the Landau Campus -","['http://mesocosm.org/wp-content/uploads/2017/05/Stream-Mesocosms-Landau_400px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Fliessrinnenanlage_400.jpg']",,,,"['49.20269', '8.106179999999995']","{'coordinates': ['49.20269', '8.106179999999995']}" +","['http://mesocosm.org/wp-content/uploads/2017/05/Stream-Mesocosms-Landau_400px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Fliessrinnenanlage_400.jpg']",,,,"['49.20269', '8.106179999999995']","{'coordinates': ['49.20269', '8.106179999999995']}" https://mesocosm.org/mesocosm/sites-aquanet-erken-laboratory/,SITES AquaNet-Erken Laboratory,Uppsala University,Sweden,Europe,"Uppsala University: P.O. Box 256 SE-751 05 Uppsala @@ -134,7 +134,7 @@ Photo credit: Erik Sahlee -","['http://mesocosm.org/wp-content/uploads/2018/05/Erken_2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Erken_1-1024x705.jpg']",,,,"['59.8354205', ' 18.6327766']","{'coordinates': ['59.8354205', '18.6327766']}" +","['http://mesocosm.org/wp-content/uploads/2018/05/Erken_2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Erken_1-1024x705.jpg']",,,,"['59.8354205', ' 18.6327766']","{'coordinates': ['59.8354205', '18.6327766']}" https://mesocosm.org/mesocosm/resources-garden-of-aquatic-plant/,Resources garden of aquatic plant,"Wuhan Botanical Garden, Chinese Academy of Sciences",China,Asia,"Lumo Road #1, Wuhan, China ","(+86)13297957139 Please login or request access to view contact information. @@ -174,7 +174,7 @@ Tanks with different macrophytes and water depth -","['http://mesocosm.org/wp-content/uploads/2019/03/The-green-house-and-the-heating-control-system-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Outdoor-tanks-with-different-size-and-area-300x225.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Tanks-with-different-macrophytes-and-water-depth-300x225.jpeg']",,,,"['30.54694', '114.41972']","{'coordinates': ['30.54694', '114.41972']}" +","['http://mesocosm.org/wp-content/uploads/2019/03/The-green-house-and-the-heating-control-system-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Outdoor-tanks-with-different-size-and-area-300x225.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Tanks-with-different-macrophytes-and-water-depth-300x225.jpeg']",,,,"['30.54694', '114.41972']","{'coordinates': ['30.54694', '114.41972']}" https://mesocosm.org/mesocosm/large-experimental-array-of-ponds-leap/,Large Experimental Array of Ponds (LEAP),McGill University,Canada,North America,"McGill Department of Biology Stewart Biology Bldg 1205 Dr Penfield Ave @@ -232,7 +232,7 @@ Depth and multiparameter probe (YSI) physico-chemical measurements.  Photo cred -","['http://mesocosm.org/wp-content/uploads/2019/04/3-1024x769.png', 'http://mesocosm.org/wp-content/uploads/2019/04/2-1024x368.png', 'http://mesocosm.org/wp-content/uploads/2019/04/1.png']",,,,"['45.5368', ' -73.1578']","{'coordinates': ['45.5368', '-73.1578']}" +","['http://mesocosm.org/wp-content/uploads/2019/04/3-1024x769.png', 'http://mesocosm.org/wp-content/uploads/2019/04/2-1024x368.png', 'http://mesocosm.org/wp-content/uploads/2019/04/1.png']",,,,"['45.5368', ' -73.1578']","{'coordinates': ['45.5368', '-73.1578']}" https://mesocosm.org/mesocosm/tva%cc%88rminne-mesocosm-facility-tmf/,Tvärminne Mesocosm Facility (TMF),University of Helsinki,Finland,Europe,"University of Helsinki P.O. Box 3 00014 University of Helsinki @@ -268,7 +268,7 @@ SYKE-MRC field mesocosm work at Tvärminne -","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}" +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}" https://mesocosm.org/mesocosm/cretacosmos/,CRETACOSMOS,Hellenic Centre for Marine Research (HCMR),Greece,Europe,"Institute of Oceanography Ex American Base Gournes 71003 Heraklion, Crete @@ -311,7 +311,7 @@ Cretacosmos mesocosm facility (Photo: Vivi Pitta)   -","['http://mesocosm.org/wp-content/uploads/2017/02/Cretacosmos-facility-during-the-LightDynaMix-project-Photo-Stella-A-Berger-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Two-basins-of-the-Cretacosmos-mesocosm-facility-300x188.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Cretacosmos-mesocosm-facility-Photo-Vivi-Pitta-300x113.jpg']",,,,"['35.3387352', '25.14421260']","{'coordinates': ['35.3387352', '25.14421260']}" +","['http://mesocosm.org/wp-content/uploads/2017/02/Cretacosmos-facility-during-the-LightDynaMix-project-Photo-Stella-A-Berger-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Two-basins-of-the-Cretacosmos-mesocosm-facility-300x188.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Cretacosmos-mesocosm-facility-Photo-Vivi-Pitta-300x113.jpg']",,,,"['35.3387352', '25.14421260']","{'coordinates': ['35.3387352', '25.14421260']}" https://mesocosm.org/mesocosm/eawag-experimental-ponds-facility/,Eawag Experimental Ponds Facility,"Eawag, Swiss Federal Institute of Aquatic Science and Technology",Switzerland,Europe,"Eawag, Überlandstrasse 133, 8600 Dübendorf, Switzerland ","Christoph Vorburger Head of Experimental Ponds Committee @@ -358,7 +358,7 @@ Image 3: Scientists taking samples at Eawag’s Experimental Pond Facility in D -","['http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-1-300x186.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-2-300x156.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-3-300x174.jpg']",,,,"['47.40515', '8.60855']","{'coordinates': ['47.40515', '8.60855']}" +","['http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-1-300x186.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-2-300x156.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-3-300x174.jpg']",,,,"['47.40515', '8.60855']","{'coordinates': ['47.40515', '8.60855']}" https://mesocosm.org/mesocosm/lippenbroek-experimental-wetland/,Lippenbroek Experimental Wetland,University of Antwerp,Belgium,Europe,"University of Antwerp Dep. Biology Universiteitsplein 1 @@ -416,7 +416,7 @@ Lippenbroek Experimental Wetland -","['http://mesocosm.org/wp-content/uploads/2017/05/Lippenbroek_5.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lippenbroek_1_314px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lippenbroek_3_400px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lippenbroek_2_400px.jpg']",,,,"['51.09284', '4.157230']","{'coordinates': ['51.09284', '4.157230']}" +","['http://mesocosm.org/wp-content/uploads/2017/05/Lippenbroek_5.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lippenbroek_1_314px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lippenbroek_3_400px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lippenbroek_2_400px.jpg']",,,,"['51.09284', '4.157230']","{'coordinates': ['51.09284', '4.157230']}" https://mesocosm.org/mesocosm/cmu-biological-station-mesocosm-facility/,CMU Biological Station mesocosm facility,"CMU Biological Station, Central Michigan University",USA,North America,"P.O. Box 206, Beaver Island, MI 49782 @@ -458,7 +458,7 @@ climate change ","on site ","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx ","photo credits: CMU Communications -",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}" +",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}" https://mesocosm.org/mesocosm/ims-metu-mesocosm-system/,IMS-METU Mesocosm System,"Middle East Technical University (METU), Institute of Marine Sciences (IMS)",Turkey,Europe,"Middle East Technical University, Institute of Marine Sciences, 33731, Erdemli, Mersin, @@ -513,7 +513,7 @@ Mesocosm tanks are equipped with sensors including GHG measurements, photo credi Dedicated field laboratory and facilities, photo credits: Korhan Özkan     -","['http://mesocosm.org/wp-content/uploads/2023/12/G0018552_1.9MB-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/WhatsApp-Image-2022-07-27-at-10.33.44-AM-1-1024x576.jpeg', 'http://mesocosm.org/wp-content/uploads/2023/12/G0011377_1.8MB-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/IMG_9936_1.9MB-768x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/G0066411_1.9MB-1024x768.jpg']",,,,"['36.564427', ' 34.254018']","{'coordinates': ['36.564427', '34.254018']}" +","['http://mesocosm.org/wp-content/uploads/2023/12/G0018552_1.9MB-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/WhatsApp-Image-2022-07-27-at-10.33.44-AM-1-1024x576.jpeg', 'http://mesocosm.org/wp-content/uploads/2023/12/G0011377_1.8MB-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/IMG_9936_1.9MB-768x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/G0066411_1.9MB-1024x768.jpg']",,,,"['36.564427', ' 34.254018']","{'coordinates': ['36.564427', '34.254018']}" https://mesocosm.org/mesocosm/bermuda-marine-mesocosm-facility-bmmf/,Bermuda Marine Mesocosm Facility (BMMF),ASU Bermuda Institute of Ocean Sciences (ASU BIOS),Bermuda,North America,"17 Biological Station, St. George’s GE01, Bermuda ","Dr. Yvonne Sawall Please login or request access to view contact information. @@ -598,7 +598,7 @@ Utility golf cart For quick and easy transport of life organisms from the boat t Mesocosm overview showing ~3/4 of the facility; photo credits: Yvonne Sawall One of the four 1500-L basins hosting coral fragments.; photo credits: Yvonne Sawall Three 40-L aquaria inside a 500-L basin, each hosting coral fragments. ; photo credits: Chloe Carbonne -","['http://mesocosm.org/wp-content/uploads/2024/11/B31560D9-B8BA-4EA4-9665-B13B46E9372A-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/11/2009F839-BFBF-4D3A-885D-30A359409B74-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/11/6DC60F28-580A-4046-91C5-4C57088CE81F-768x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2024/11/2CCD8F84-538A-40A1-9507-74E4794C3B3A-1024x768.jpg']",,,,"['32.370636', '-64.697763']","{'coordinates': ['32.370636', '-64.697763']}" +","['http://mesocosm.org/wp-content/uploads/2024/11/B31560D9-B8BA-4EA4-9665-B13B46E9372A-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/11/2009F839-BFBF-4D3A-885D-30A359409B74-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/11/6DC60F28-580A-4046-91C5-4C57088CE81F-768x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2024/11/2CCD8F84-538A-40A1-9507-74E4794C3B3A-1024x768.jpg']",,,,"['32.370636', '-64.697763']","{'coordinates': ['32.370636', '-64.697763']}" https://mesocosm.org/mesocosm/limnotrons/,Limnotron,Netherlands Institute for Ecology (NIOO-KNAW),The Netherlands,Europe,"Netherlands Institute for Ecology (NIOO) Droevendaalsesteeg 10 6708 PB Wageningen @@ -647,7 +647,7 @@ Limnotron – a highly controlled experimental unit -","['http://mesocosm.org/wp-content/uploads/2017/02/Limnotron_400px2-300x214.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Limnotrons_400px1-268x300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/Limnotron-a-highly-controlled-experimental-unit-300x225.jpg']",,,,"['51.9876442', '5.6706486']","{'coordinates': ['51.9876442', '5.6706486']}" +","['http://mesocosm.org/wp-content/uploads/2017/02/Limnotron_400px2-300x214.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Limnotrons_400px1-268x300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/Limnotron-a-highly-controlled-experimental-unit-300x225.jpg']",,,,"['51.9876442', '5.6706486']","{'coordinates': ['51.9876442', '5.6706486']}" https://mesocosm.org/mesocosm/aqua-stress/,Aqua-stress,University of Canberra,Australia,Australia,"Institute for Applied Ecology, Faculty of Science and Technology University of Canberra, Bruce, ACT, 2617, Australia ","Jon Bray @@ -688,7 +688,7 @@ Credit: Alica Tschierschke -","['http://mesocosm.org/wp-content/uploads/2019/03/Aqua-stress-1-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Aqua-stress-2-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Aqua-stress-3-300x200.jpg']",,,,"['-35.23511', ' 149.086653']","{'coordinates': ['-35.23511', '149.086653']}" +","['http://mesocosm.org/wp-content/uploads/2019/03/Aqua-stress-1-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Aqua-stress-2-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Aqua-stress-3-300x200.jpg']",,,,"['-35.23511', ' 149.086653']","{'coordinates': ['-35.23511', '149.086653']}" https://mesocosm.org/mesocosm/mesocosm-gmbh/,MESOCOSM GmbH,Institut für Gewaesserschutz,Germany,Europe,"Institut für Gewaesserschutz Neu-Ulrichstein 5 D-35315 Homberg (Ohm) @@ -725,7 +725,7 @@ Mesocosm test basins -","['http://mesocosm.org/wp-content/uploads/2017/05/test-facility-mesocosmGmbH.de_.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/mesocosmGmbH.de_.jpg']",,,,"['50.7527558', '9.0331164']","{'coordinates': ['50.7527558', '9.0331164']}" +","['http://mesocosm.org/wp-content/uploads/2017/05/test-facility-mesocosmGmbH.de_.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/mesocosmGmbH.de_.jpg']",,,,"['50.7527558', '9.0331164']","{'coordinates': ['50.7527558', '9.0331164']}" https://mesocosm.org/mesocosm/pohang-mesocosm-system/,Pohang Mesocosm System,Pohang University of Science and Technology,South Korea,Asia,"Pohang University of Science and Technology 77 CHEONGAM-RO.NAM-GU. POHANG.GYUNGBUK. @@ -744,7 +744,7 @@ Please login or request access to view contact information. 34.886946,128.623892 ",,,,,"http://climate.postech.ac.kr/board/view.do?iboardgroupseq=4&iboardmanagerseq=12 -",,,,,,"['34.886946', '128.623892']","{'coordinates': ['34.886946', '128.623892']}" +",,,,,,"['34.886946', '128.623892']","{'coordinates': ['34.886946', '128.623892']}" https://mesocosm.org/mesocosm/national-experimental-platform-in-aquatic-ecology-planaqua/,National Experimental Platform in Aquatic Ecology (PLANAQUA),,France,Europe,"Ecole Normale Supérieure (ENS) National Centre of Scientific Research (CNRS) Université Pierre et Marie Curie (UPMC) @@ -779,7 +779,7 @@ Graphic of the PLANAQUA facility -","['http://mesocosm.org/wp-content/uploads/2017/02/Saint-Pierre_PLANAQUA-300x206.png', 'http://mesocosm.org/wp-content/uploads/2017/02/Plamaqua_Mesocosms_8.14-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Bild1-225x300.jpg']",,,,"['48.287979', '2.6759703']","{'coordinates': ['48.287979', '2.6759703']}" +","['http://mesocosm.org/wp-content/uploads/2017/02/Saint-Pierre_PLANAQUA-300x206.png', 'http://mesocosm.org/wp-content/uploads/2017/02/Plamaqua_Mesocosms_8.14-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Bild1-225x300.jpg']",,,,"['48.287979', '2.6759703']","{'coordinates': ['48.287979', '2.6759703']}" https://mesocosm.org/mesocosm/cer-mesocosms/,CER Mesocosms,Centre for Ecological Research,Hungary,Europe,"Centre for Ecological Research H-1113 Budapest, Karolina út 29. Hungary @@ -839,7 +839,7 @@ CER mesocosms: in situ experiment (photo credit: Zsófia Horváth) -","['http://mesocosm.org/wp-content/uploads/2023/07/DJI_0203-fotor-20230722131035-1024x637.jpg', 'http://mesocosm.org/wp-content/uploads/2021/05/3.m-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2021/05/4.m-1024x682.jpg']",,,,"['47.705993', '19.229583']","{'coordinates': ['47.705993', '19.229583']}" +","['http://mesocosm.org/wp-content/uploads/2023/07/DJI_0203-fotor-20230722131035-1024x637.jpg', 'http://mesocosm.org/wp-content/uploads/2021/05/3.m-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2021/05/4.m-1024x682.jpg']",,,,"['47.705993', '19.229583']","{'coordinates': ['47.705993', '19.229583']}" https://mesocosm.org/mesocosm/consortium-gwrc-mesocosm-facility/,Great Waters Research Consortium (GWRC) mesocosm facility,"Natural Resources Research Great Waters Research Institute (NRRI), University of Minnesota Duluth; Lake Superior Research Institute (LSRI), University of Wisconsin Superior (joint project)",USA,North America,"Montreal Pier Rd, Superior, WI 54880 USA @@ -888,7 +888,7 @@ Figure credits: Euan D. Reavie -","['http://mesocosm.org/wp-content/uploads/2022/09/pic1.2-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2022/09/pic2.2-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2022/09/pic3-1-1024x625.jpg']",,,,"['46.7109', '-92.0484']","{'coordinates': ['46.7109', '-92.0484']}" +","['http://mesocosm.org/wp-content/uploads/2022/09/pic1.2-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2022/09/pic2.2-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2022/09/pic3-1-1024x625.jpg']",,,,"['46.7109', '-92.0484']","{'coordinates': ['46.7109', '-92.0484']}" https://mesocosm.org/mesocosm/bolmen-forskningsstation/,Bolmen Forskningsstation,Sweden Water Research AB,Sweden,Europe,"Sweden Water Research AB Ideon Science Park Scheelevägen 15 SE-223 70 Lund @@ -927,7 +927,7 @@ Photo credit: Juha Rankinen -","['http://mesocosm.org/wp-content/uploads/2018/05/Bolmen_2-1024x577.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Bolmen_3-1024x577.jpg']",,,,"['56.943190', ' 13.645610']","{'coordinates': ['56.943190', '13.645610']}" +","['http://mesocosm.org/wp-content/uploads/2018/05/Bolmen_2-1024x577.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Bolmen_3-1024x577.jpg']",,,,"['56.943190', ' 13.645610']","{'coordinates': ['56.943190', '13.645610']}" https://mesocosm.org/mesocosm/sinderhoeve/,Sinderhoeve,Wageningen Environmental Research,The Netherlands,Europe,"Telefoonweg 77 6871NJ Renkum The Netherlands @@ -1003,7 +1003,7 @@ SInderhoeve areal; Figure cerdit: Wageningen Environmental Research   -","['http://mesocosm.org/wp-content/uploads/2018/11/Foto-sloten-sinderhoeve-1024x697.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/DSC02496-768x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/IMG_2919-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/Perspectief-Sinderhoeve-kl-1024x679.jpg']",,,,"['51.998681', ' 5.752708']","{'coordinates': ['51.998681', '5.752708']}" +","['http://mesocosm.org/wp-content/uploads/2018/11/Foto-sloten-sinderhoeve-1024x697.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/DSC02496-768x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/IMG_2919-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/Perspectief-Sinderhoeve-kl-1024x679.jpg']",,,,"['51.998681', ' 5.752708']","{'coordinates': ['51.998681', '5.752708']}" https://mesocosm.org/mesocosm/iberian-pond-network-ipn/,Iberian Pond Network (IPN),"InBio/CIBIO, University of Évora","Portugal, Spain",Europe,"InBio/CIBIO, University of Évora, Largo dos Colegiais, 7000 Évora, Portugal ","Prof. Miguel B. Araújo @@ -1045,7 +1045,7 @@ Toledo – La Higueruela Experimental Farm (Spain) -","['http://mesocosm.org/wp-content/uploads/2017/02/IberanPondProject_400x1-300x253.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/charcas_evora_3_295.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/charcas_higueruela_3_295.jpg']",,,,"['41.1465479', '-8.6156998']","{'coordinates': ['41.1465479', '-8.6156998']}" +","['http://mesocosm.org/wp-content/uploads/2017/02/IberanPondProject_400x1-300x253.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/charcas_evora_3_295.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/charcas_higueruela_3_295.jpg']",,,,"['41.1465479', '-8.6156998']","{'coordinates': ['41.1465479', '-8.6156998']}" https://mesocosm.org/mesocosm/iberian-pond-network-ipn/,Iberian Pond Network (IPN),"InBio/CIBIO, University of Évora","Portugal, Spain",Europe,"InBio/CIBIO, University of Évora, Largo dos Colegiais, 7000 Évora, Portugal ","Prof. Miguel B. Araújo @@ -1087,7 +1087,7 @@ Toledo – La Higueruela Experimental Farm (Spain) -","['http://mesocosm.org/wp-content/uploads/2017/02/IberanPondProject_400x1-300x253.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/charcas_evora_3_295.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/charcas_higueruela_3_295.jpg']",,,,"['38.5685819', '-7.9107097']","{'coordinates': ['38.5685819', '-7.9107097']}" +","['http://mesocosm.org/wp-content/uploads/2017/02/IberanPondProject_400x1-300x253.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/charcas_evora_3_295.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/charcas_higueruela_3_295.jpg']",,,,"['38.5685819', '-7.9107097']","{'coordinates': ['38.5685819', '-7.9107097']}" https://mesocosm.org/mesocosm/aquatic-research-facility-at-the-university-of-kansas-field-station/,Aquatic Research Facility at the University of Kansas Field Station,University of Kansas Field Station,USA,North America,"350 Wild Horse Road, Lawrence, KS 66044, USA ","Ted Harris Please login or request access to view contact information. @@ -1406,7 +1406,7 @@ Sampling large mesocosm tanks – Photo Credit Kirsten Bosnak -","['http://mesocosm.org/wp-content/uploads/2019/04/View-of-tanks-replicated-ponds-and-catchment-ponds-–-Photo-Credit-Scott-Campbell-300x199.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/View-of-Cross-Reservoir-–-Photo-Credit-Kirsten-Bosnak-300x199.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/View-core-field-station-facilities-–-Photo-Credit-Google-Earth-300x200.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/View-of-inoculated-mesocosms-in-the-3-season-greenhouse-4-season-greenhouse-also-exists-–-Photo-Credit-Ted-Harris-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/One-set-of-the-replicated-ponds–-Photo-Credit-Scott-Campbell-300x199.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/Sampling-large-mesocosm-tanks-–-Photo-Credit-Kirsten-Bosnak-300x199.jpeg']",['http://mesocosm.org/wp-content/uploads/2019/04/equipment-300x199.jpeg'],['http://mesocosm.org/wp-content/uploads/2019/04/lodging-300x199.jpeg'],,"['39.048918', '-95.191171']","{'coordinates': ['39.048918', '-95.191171']}" +","['http://mesocosm.org/wp-content/uploads/2019/04/View-of-tanks-replicated-ponds-and-catchment-ponds-–-Photo-Credit-Scott-Campbell-300x199.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/View-of-Cross-Reservoir-–-Photo-Credit-Kirsten-Bosnak-300x199.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/View-core-field-station-facilities-–-Photo-Credit-Google-Earth-300x200.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/View-of-inoculated-mesocosms-in-the-3-season-greenhouse-4-season-greenhouse-also-exists-–-Photo-Credit-Ted-Harris-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/One-set-of-the-replicated-ponds–-Photo-Credit-Scott-Campbell-300x199.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/Sampling-large-mesocosm-tanks-–-Photo-Credit-Kirsten-Bosnak-300x199.jpeg']",['http://mesocosm.org/wp-content/uploads/2019/04/equipment-300x199.jpeg'],['http://mesocosm.org/wp-content/uploads/2019/04/lodging-300x199.jpeg'],,"['39.048918', '-95.191171']","{'coordinates': ['39.048918', '-95.191171']}" https://mesocosm.org/mesocosm/life-infrastructure-ecp-facility-behavioural-ecology-of-fish-st-pee-lapitxuri/,"LIFE Infrastructure - ECP Facility (Behavioural Ecology of Fish, St Pée/Lapitxuri)",Infrastructure multi-site: RI LIFE,France,Europe,"RI LIFE INRA-AQUAPOLE Agnes Bardonnet 64310 St-Pée-sur-Nivelle @@ -1501,7 +1501,7 @@ Lapitxuri semi-natural stream, Foto credit: Glise/INRA   -","['http://mesocosm.org/wp-content/uploads/2018/11/ECP_Aerial-view_St-Pée-1024x741.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Flume-1024x684.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Aerial-view_Lapitxuri.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Lapitxuri-semi-natural-stream.jpg']",,,,"['43.3561111', ' -1.5616666666666668']","{'coordinates': ['43.3561111', '-1.5616666666666668']}" +","['http://mesocosm.org/wp-content/uploads/2018/11/ECP_Aerial-view_St-Pée-1024x741.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Flume-1024x684.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Aerial-view_Lapitxuri.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Lapitxuri-semi-natural-stream.jpg']",,,,"['43.3561111', ' -1.5616666666666668']","{'coordinates': ['43.3561111', '-1.5616666666666668']}" https://mesocosm.org/mesocosm/life-infrastructure-ecp-facility-behavioural-ecology-of-fish-st-pee-lapitxuri/,"LIFE Infrastructure - ECP Facility (Behavioural Ecology of Fish, St Pée/Lapitxuri)",Infrastructure multi-site: RI LIFE,France,Europe,"RI LIFE INRA-AQUAPOLE Agnes Bardonnet 64310 St-Pée-sur-Nivelle @@ -1596,7 +1596,7 @@ Lapitxuri semi-natural stream, Foto credit: Glise/INRA   -","['http://mesocosm.org/wp-content/uploads/2018/11/ECP_Aerial-view_St-Pée-1024x741.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Flume-1024x684.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Aerial-view_Lapitxuri.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Lapitxuri-semi-natural-stream.jpg']",,,,"[' 43.2833333', ' -1.4822222222222223']","{'coordinates': ['43.2833333', '-1.4822222222222223']}" +","['http://mesocosm.org/wp-content/uploads/2018/11/ECP_Aerial-view_St-Pée-1024x741.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Flume-1024x684.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Aerial-view_Lapitxuri.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Lapitxuri-semi-natural-stream.jpg']",,,,"[' 43.2833333', ' -1.4822222222222223']","{'coordinates': ['43.2833333', '-1.4822222222222223']}" https://mesocosm.org/mesocosm/heated-aquatic-mesocosms-for-climate-warming-experiment/,Heated Aquatic Mesocosms for Climate Warming Experiment,"Nanjing Institute of Geography and Limnology, Chinese Academy of Sciences",China,Asia,"73 East Beijing Road, Nanjing, China ","Dr. Hu He Please login or request access to view contact information. @@ -1646,7 +1646,7 @@ Water temperature trends -","['https://www.aquacosm.eu/wp-content/uploads/2019/03/location-300x170.png', 'https://www.aquacosm.eu/wp-content/uploads/2019/03/Experiment-setting-300x225.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Unheated-mesocosms-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Heated-mesocosms-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Water-temperature-trends-300x209.png']",,,,"['31.418517', '120.218446']","{'coordinates': ['31.418517', '120.218446']}" +","['https://www.aquacosm.eu/wp-content/uploads/2019/03/location-300x170.png', 'https://www.aquacosm.eu/wp-content/uploads/2019/03/Experiment-setting-300x225.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Unheated-mesocosms-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Heated-mesocosms-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Water-temperature-trends-300x209.png']",,,,"['31.418517', '120.218446']","{'coordinates': ['31.418517', '120.218446']}" https://mesocosm.org/mesocosm/tropical-aquatic-ecology-mesocosm/,Tropical Aquatic Ecology Mesocosm,State University of Goiás,Brazil,South America,"BR153, Nº3105, Anápolis, Goiás, Brazil. ","Dr. João Carlos Nabout Please login or request access to view contact information. @@ -1694,7 +1694,7 @@ Figure 4 Mesocosm of Tropical Aquatic Ecology – Finalized (Photo credit: João -","['http://mesocosm.org/wp-content/uploads/2019/03/Figure-1-Mesocosm-of-Tropical-Aquatic-Ecology-–-Phase-of-construction-300x225.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Figure-2-Mesocosm-of-Tropical-Aquatic-Ecology-–-Phase-of-construction-300x128.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Figure-3-Mesocosm-of-Tropical-Aquatic-Ecology-–-Pilot-of-first-studies-300x224.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Figure-4-Mesocosm-of-Tropical-Aquatic-Ecology-Finalized-300x127.jpeg']",,,,"['-16.37930', '-48.94672']","{'coordinates': ['-16.37930', '-48.94672']}" +","['http://mesocosm.org/wp-content/uploads/2019/03/Figure-1-Mesocosm-of-Tropical-Aquatic-Ecology-–-Phase-of-construction-300x225.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Figure-2-Mesocosm-of-Tropical-Aquatic-Ecology-–-Phase-of-construction-300x128.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Figure-3-Mesocosm-of-Tropical-Aquatic-Ecology-–-Pilot-of-first-studies-300x224.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Figure-4-Mesocosm-of-Tropical-Aquatic-Ecology-Finalized-300x127.jpeg']",,,,"['-16.37930', '-48.94672']","{'coordinates': ['-16.37930', '-48.94672']}" https://mesocosm.org/mesocosm/life-infrastructure-pearl-facility-experimental-aquatic-platform-rennes-le-rheu/,"LIFE Infrastructure - PEARL facility (Experimental Aquatic Platform, Rennes/Le Rheu)",Infrastructure multi-site: RI LIFE,France,Europe,"RI LIFE INRA-AQUAPOLE Agnes Bardonnet 64310 St-Pée-sur-Nivelle @@ -1793,7 +1793,7 @@ Series of mesocosms 30 m3 and 9 m3, Foto credit: Beaumont/INRA   -","['http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Aerial_view_Rennes_experimental_complex.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Serie_of_30_mesocoms_3-m3-1024x678.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Aerial_view-Ponds-Station_PF-Etangs-1024x594.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Mesocosms_Series_30m3_and_9-m3-1024x678.jpg']",,,,"['48.1130833', ' -1.4822222222222223']","{'coordinates': ['48.1130833', '-1.4822222222222223']}" +","['http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Aerial_view_Rennes_experimental_complex.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Serie_of_30_mesocoms_3-m3-1024x678.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Aerial_view-Ponds-Station_PF-Etangs-1024x594.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Mesocosms_Series_30m3_and_9-m3-1024x678.jpg']",,,,"['48.1130833', ' -1.4822222222222223']","{'coordinates': ['48.1130833', '-1.4822222222222223']}" https://mesocosm.org/mesocosm/life-infrastructure-pearl-facility-experimental-aquatic-platform-rennes-le-rheu/,"LIFE Infrastructure - PEARL facility (Experimental Aquatic Platform, Rennes/Le Rheu)",Infrastructure multi-site: RI LIFE,France,Europe,"RI LIFE INRA-AQUAPOLE Agnes Bardonnet 64310 St-Pée-sur-Nivelle @@ -1892,7 +1892,7 @@ Series of mesocosms 30 m3 and 9 m3, Foto credit: Beaumont/INRA   -","['http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Aerial_view_Rennes_experimental_complex.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Serie_of_30_mesocoms_3-m3-1024x678.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Aerial_view-Ponds-Station_PF-Etangs-1024x594.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Mesocosms_Series_30m3_and_9-m3-1024x678.jpg']",,,,"[' 48.1202778', ' -1.7919444444444443']","{'coordinates': ['48.1202778', '-1.7919444444444443']}" +","['http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Aerial_view_Rennes_experimental_complex.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Serie_of_30_mesocoms_3-m3-1024x678.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Aerial_view-Ponds-Station_PF-Etangs-1024x594.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Mesocosms_Series_30m3_and_9-m3-1024x678.jpg']",,,,"[' 48.1202778', ' -1.7919444444444443']","{'coordinates': ['48.1202778', '-1.7919444444444443']}" https://mesocosm.org/mesocosm/kosmos-kiel-off-shore-mesocosms-for-ocean-simulations/,KOSMOS (Kiel Off-Shore Mesocosms for Ocean Simulations),GEOMAR-Helmholtz Center for Ocean Research Kiel,Germany,Europe,"GEOMAR-Helmholtz Center for Ocean Research West shore campus Düsternbrooker Weg 20 @@ -1938,7 +1938,7 @@ Sampling of the KOSMOS mesocosms during an experiment on the effects of ocean ac -","['http://mesocosm.org/wp-content/uploads/2017/02/KOSMOS-Raunefjord_2011-300x142.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/KOSMOS-deployment-with-the-Spanish-research-vessel-„Hesprides“-off-Gran-Canaria-in-2014-300x225.png', 'http://mesocosm.org/wp-content/uploads/2017/03/Sampling-of-the-KOSMOS-mesocosms-during-an-experiment-on-the-effects-of-ocean-acidification-off-Gran-Canaria-in-2014-300x225.png']",,,,"['54.330034', '10.1482026']","{'coordinates': ['54.330034', '10.1482026']}" +","['http://mesocosm.org/wp-content/uploads/2017/02/KOSMOS-Raunefjord_2011-300x142.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/KOSMOS-deployment-with-the-Spanish-research-vessel-„Hesprides“-off-Gran-Canaria-in-2014-300x225.png', 'http://mesocosm.org/wp-content/uploads/2017/03/Sampling-of-the-KOSMOS-mesocosms-during-an-experiment-on-the-effects-of-ocean-acidification-off-Gran-Canaria-in-2014-300x225.png']",,,,"['54.330034', '10.1482026']","{'coordinates': ['54.330034', '10.1482026']}" https://mesocosm.org/mesocosm/maximus/,MAXIMUS,Roskilde University,Denmark,Europe,"Roskilde University Universitetsvej 1 P.O. Box 260 @@ -1957,7 +1957,7 @@ Please login or request access to view contact information. ",,,,,"http://rucforsk.ruc.dk/site/person/bhansen Impaq project: Turbot tracked in a tanknutrients, -",,,,,,"['55.6519602', '12.137471']","{'coordinates': ['55.6519602', '12.137471']}" +",,,,,,"['55.6519602', '12.137471']","{'coordinates': ['55.6519602', '12.137471']}" https://mesocosm.org/mesocosm/innotech-alberta-aquatic-mesocosm-facility/,InnoTech Alberta Aquatic Mesocosm Facility,InnoTech Alberta,Canada,North America,"PO Bag 4000 Hwy 16A & 75 Street Vegreville, Alberta, Canada, T9C 1T4 @@ -2060,7 +2060,7 @@ A water layer is maintained at the bottom of the mesocosms during winter, photo InnoTech Alberta Aquatic Mesocosm Facility, photo credit: InnoTech Alberta Elevated view of mesocosm facility with 2 smaller tanks nested within each of the main mesocosm tanks on the bermed containment pad. Photo Credit: InnoTech Alberta Mescocosms being used for an aquatic experiment. Note the floating automated CO2 flux chambers in the tanks in the foreground. Photo Credit: InnoTech Alberta -","['http://mesocosm.org/wp-content/uploads/2023/08/sunset-innotech-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/08/sinter-innotech.jpg', 'http://mesocosm.org/wp-content/uploads/2023/08/birdview-InnoTech-1024x469.jpg', 'http://mesocosm.org/wp-content/uploads/2023/08/birdeye.jpg', 'http://mesocosm.org/wp-content/uploads/2023/08/ter2.jpg']",,,,"['53.506641', '-112.093612']","{'coordinates': ['53.506641', '-112.093612']}" +","['http://mesocosm.org/wp-content/uploads/2023/08/sunset-innotech-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/08/sinter-innotech.jpg', 'http://mesocosm.org/wp-content/uploads/2023/08/birdview-InnoTech-1024x469.jpg', 'http://mesocosm.org/wp-content/uploads/2023/08/birdeye.jpg', 'http://mesocosm.org/wp-content/uploads/2023/08/ter2.jpg']",,,,"['53.506641', '-112.093612']","{'coordinates': ['53.506641', '-112.093612']}" https://mesocosm.org/mesocosm/lmu-mesocosms/,LMU Mesocosms,Ludwig-Maximilians-Universität,Germany,Europe,"Ludwig-Maximilians-Universität München Department Biologie II Aquatic Ecology @@ -2096,7 +2096,7 @@ Munich Mesocosm facility on Campus, Photo: Dr. Stella Berger -","['http://mesocosm.org/wp-content/uploads/2017/02/Munih_mesocosms2-300x188.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Munich_mesocosms1-300x225.jpg']",,,,"['48.109151', '11.45844']","{'coordinates': ['48.109151', '11.45844']}" +","['http://mesocosm.org/wp-content/uploads/2017/02/Munih_mesocosms2-300x188.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Munich_mesocosms1-300x225.jpg']",,,,"['48.109151', '11.45844']","{'coordinates': ['48.109151', '11.45844']}" https://mesocosm.org/mesocosm/crimac-calabria-marine-centre/,Crimac – Calabria Marine Centre,Stazione Zoologica Anton Dohrn,Italy,Europe,"Contrada Torre Spaccata, Località Torre Spaccata, 87071 Amendolara (CS), @@ -2146,7 +2146,7 @@ https://www.szn.it/index.php/it/chi-siamo/le-nostre-sedi/sedi-territoriali-di-ti ","Amendolara Seat – outdoor facility, photo credits: Detail of Rack, photo credits: Filtration System, photo credit: -","['http://mesocosm.org/wp-content/uploads/2025/06/Photo-1.2-Amendolara-seat-outdoor-facility-Kopie-1024x714.jpg', 'http://mesocosm.org/wp-content/uploads/2025/06/Photo-3-Detail-of-Rack-2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2025/06/Photo-2.2-Filtration-System-Kopie-1024x768.jpg']",,,,['39.9588889'],{'coordinates': nan} +","['http://mesocosm.org/wp-content/uploads/2025/06/Photo-1.2-Amendolara-seat-outdoor-facility-Kopie-1024x714.jpg', 'http://mesocosm.org/wp-content/uploads/2025/06/Photo-3-Detail-of-Rack-2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2025/06/Photo-2.2-Filtration-System-Kopie-1024x768.jpg']",,,,['39.9588889'],{'coordinates': nan} https://mesocosm.org/mesocosm/crimac-calabria-marine-centre/,Crimac – Calabria Marine Centre,Stazione Zoologica Anton Dohrn,Italy,Europe,"Contrada Torre Spaccata, Località Torre Spaccata, 87071 Amendolara (CS), @@ -2196,7 +2196,7 @@ https://www.szn.it/index.php/it/chi-siamo/le-nostre-sedi/sedi-territoriali-di-ti ","Amendolara Seat – outdoor facility, photo credits: Detail of Rack, photo credits: Filtration System, photo credit: -","['http://mesocosm.org/wp-content/uploads/2025/06/Photo-1.2-Amendolara-seat-outdoor-facility-Kopie-1024x714.jpg', 'http://mesocosm.org/wp-content/uploads/2025/06/Photo-3-Detail-of-Rack-2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2025/06/Photo-2.2-Filtration-System-Kopie-1024x768.jpg']",,,,['16.62666666666667'],{'coordinates': nan} +","['http://mesocosm.org/wp-content/uploads/2025/06/Photo-1.2-Amendolara-seat-outdoor-facility-Kopie-1024x714.jpg', 'http://mesocosm.org/wp-content/uploads/2025/06/Photo-3-Detail-of-Rack-2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2025/06/Photo-2.2-Filtration-System-Kopie-1024x768.jpg']",,,,['16.62666666666667'],{'coordinates': nan} https://mesocosm.org/mesocosm/ceh-aquatic-mesocosm-facility-camf/,CEH Aquatic Mesocosm Facility (CAMF),Centre for Ecology & Hydrology (CEH),United Kingdom,Europe,"Centre for Ecology & Hydrology (CEH) Lancaster University Library Avenue @@ -2254,7 +2254,7 @@ Figure credits: Heidrun Feuchtmayr -","['http://mesocosm.org/wp-content/uploads/2019/07/IMG_5163-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2019/07/IMG_5156-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2019/07/CAMF-schematic.jpg']",,,,"['54.014373', ' -2.777004']","{'coordinates': ['54.014373', '-2.777004']}" +","['http://mesocosm.org/wp-content/uploads/2019/07/IMG_5163-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2019/07/IMG_5156-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2019/07/CAMF-schematic.jpg']",,,,"['54.014373', ' -2.777004']","{'coordinates': ['54.014373', '-2.777004']}" https://mesocosm.org/mesocosm/experimental-mesocosm-facility-at-friday-harbor-labs-fhl/,Experimental Mesocosm Facility at Friday Harbor Labs (FHL),University of Washington,USA,North-America,"University of Washington School of Oceanography 1503 NE Boat Street @@ -2317,7 +2317,7 @@ The lab is supplied with conditioned water from a custom filtration and CO2 stri -","['http://mesocosm.org/wp-content/uploads/2017/05/outdoor-oalab4-300x129.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/indoor-oalab3.jpg']",,,,"['48.5466503', '-123.0127619']","{'coordinates': ['48.5466503', '-123.0127619']}" +","['http://mesocosm.org/wp-content/uploads/2017/05/outdoor-oalab4-300x129.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/indoor-oalab3.jpg']",,,,"['48.5466503', '-123.0127619']","{'coordinates': ['48.5466503', '-123.0127619']}" https://mesocosm.org/mesocosm/mekjarvik-research-station/,Mekjarvik Research Station,International Research Institute of Stavanger (IRIS),Norway,Europe,"IRIS P. O. Box 8046, 4068 Stavanger, (mailing address) Prof. Olav Hanssensvei 15, 4021 Stavanger (visiting address) @@ -2384,7 +2384,7 @@ Photo: Leon Moodley   -","['http://mesocosm.org/wp-content/uploads/2018/04/Stavanger-1-300x279.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/Stavanger-2-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/Stavanger-3-300x200.jpg']",,,,"['59.0206314', ' 5.6159267000000455']","{'coordinates': ['59.0206314', '5.6159267000000455']}" +","['http://mesocosm.org/wp-content/uploads/2018/04/Stavanger-1-300x279.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/Stavanger-2-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/Stavanger-3-300x200.jpg']",,,,"['59.0206314', ' 5.6159267000000455']","{'coordinates': ['59.0206314', '5.6159267000000455']}" https://mesocosm.org/mesocosm/mesocosms-at-the-upper-parana-river-nupelia-field-station/,Mesocosms at the Upper Paraná River (Nupélia Field Station),Universidade Estadual de Maringá – UEM,Brazil,South America,"Av. Colombo 5790, Maringá, PR, Brazil, 87020-900 ","Roger Paulo Mormul Please login or request access to view contact information. @@ -2413,7 +2413,7 @@ Please login or request access to view contact information. -","['http://mesocosm.org/wp-content/uploads/2019/03/Mesocosmos-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Fieldstation-300x224.png']",,,,"['-22.765525', '-53.2572166']","{'coordinates': ['-22.765525', '-53.2572166']}" +","['http://mesocosm.org/wp-content/uploads/2019/03/Mesocosmos-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Fieldstation-300x224.png']",,,,"['-22.765525', '-53.2572166']","{'coordinates': ['-22.765525', '-53.2572166']}" https://mesocosm.org/mesocosm/sites-aquanet-asa-research-station/,SITES AquaNet – Asa Research Station,SITES and Swedish University of Agricultural Sciences,Sweden,Europe,"Sveriges lantbruksuniversitet (SLU) Unit for Field-based Forest Research Asa Research Station @@ -2455,7 +2455,7 @@ Photo credit: Ola Langvall   -","['http://mesocosm.org/wp-content/uploads/2018/05/Asa_1-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Asa_3-1024x574.jpg']",,,,"['57.164325', ' 14.782712']","{'coordinates': ['57.164325', '14.782712']}" +","['http://mesocosm.org/wp-content/uploads/2018/05/Asa_1-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Asa_3-1024x574.jpg']",,,,"['57.164325', ' 14.782712']","{'coordinates': ['57.164325', '14.782712']}" https://mesocosm.org/mesocosm/solbergstrand-experimental-facility-sef/,Solbergstrand Experimental Facility (SEF),Norwegian Institute for Water Research,Norway,Europe,"Norwegian Institute for Water Research NIVA Oslo Gaustadalléen 21 @@ -2515,7 +2515,7 @@ oddbjoern.pettersen@niva.no -","['http://mesocosm.org/wp-content/uploads/2017/02/Drøbak_mesocosms-construction_400px-300x176.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Solbergstrand_Mesocosms_400x1-300x221.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Solbergstrand_Flumes_400px2-300x136.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Solberstrand_Flumes_400px1-300x213.jpg']",,,,"['59.6157541', '10.6528178']","{'coordinates': ['59.6157541', '10.6528178']}" +","['http://mesocosm.org/wp-content/uploads/2017/02/Drøbak_mesocosms-construction_400px-300x176.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Solbergstrand_Mesocosms_400x1-300x221.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Solbergstrand_Flumes_400px2-300x136.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Solberstrand_Flumes_400px1-300x213.jpg']",,,,"['59.6157541', '10.6528178']","{'coordinates': ['59.6157541', '10.6528178']}" https://mesocosm.org/mesocosm/sletvik-field-station/,Sletvik Field Station,Norwegian University of Science and Technology,Norway,Europe,"Norwegian University of Science and Technology Department of Biology Trondhjem Biological Station @@ -2536,7 +2536,7 @@ sea based mesocosms ",,,"Two large lecturing and three smaller laboratories, one of which has access to salt water, and a meeting room. ","Accommodation for 50 people, kitchen and dining room, lounge, bedrooms, showers, washing rooms and a sauna. All meals are served at the station and normally consist of a self-service breakfast, lunch packet and dinner. The kitchen can be used in the evening by appointment with the station’s attendant chef. ","http://www.ntnu.edu/biology/sletvik-field-station -",,,,,,"['63.5929285', '9.5457926']","{'coordinates': ['63.5929285', '9.5457926']}" +",,,,,,"['63.5929285', '9.5457926']","{'coordinates': ['63.5929285', '9.5457926']}" https://mesocosm.org/mesocosm/wuhan-warming-mesocosm-facility-wwmf/,Wuhan Warming Mesocosm Facility (WWMF),"1. Institute of Hydrobiology, Chinese Academy of Sciences (IHB-CAS); 2. College of Fischeries, Huazhong Agricultural University",China,Asia," Institute of Hydrobiology, Chinese Academy of Sciences; Address: No. 7 Donghu South Road, Wuchang District, Wuhan, Hubei Province, China Huazhong Agricultural University; Address: No. 1, Shizishan Street, Hongshan District, Wuhan, Hubei Province, China @@ -2563,8 +2563,7 @@ macrophytes 30.4670833, 114.35961111111111 ","Along the Yangtze River, hundreds of shallow lakes are over-exploited by human beings, resulting in the deterioration of the functions and services performed by these lake ecosystems. Furthermore, these shallow lakes are suffering from global climate change, under continuous warming over the last few decades and an unpredicted pattern of extreme climate events. We are interested in how climate change will affect these shallow lakes in the future, and what we can do to mitigate these effects. -","We are a group of young scientists, led by Prof. dr. Jun Xu. We all have international education background (studied in The Netherlands, Sweden, Finland and US). We have been working on - +"," climate change effects on shallow freshwater ecosystems, focusing on trophic interactions food webs @@ -2591,7 +2590,7 @@ Photo credit: Chao Li -","['http://mesocosm.org/wp-content/uploads/2019/01/WWMF2.jpg', 'http://mesocosm.org/wp-content/uploads/2019/01/WWMF1-1024x767.jpg']",,,,"['30.4670833', ' 114.35961111111111']","{'coordinates': ['30.4670833', '114.35961111111111']}" +","['http://mesocosm.org/wp-content/uploads/2019/01/WWMF2.jpg', 'http://mesocosm.org/wp-content/uploads/2019/01/WWMF1-1024x767.jpg']",,,,"['30.4670833', ' 114.35961111111111']","{'coordinates': ['30.4670833', '114.35961111111111']}" https://mesocosm.org/mesocosm/kob-kiel-outdoor-benthocosms/,KOB (Kiel-Outdoor-Benthocosms),GEOMAR-Helmholtz Center for Ocean Research,Germany,Europe,"GEOMAR-Helmholtz Center for Ocean Research West shore campus Düsternbrooker Weg 20 @@ -2631,7 +2630,7 @@ KOB – Kiel Outdoor Benthocosms (Photo: Mark Lenz) -","['http://mesocosm.org/wp-content/uploads/2017/02/KOB_2_400_Wahl_1-282x300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/KOB_3_400_Lenz-300x201.jpg']",,,,"['54.330034', '10.1482026']","{'coordinates': ['54.330034', '10.1482026']}" +","['http://mesocosm.org/wp-content/uploads/2017/02/KOB_2_400_Wahl_1-282x300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/KOB_3_400_Lenz-300x201.jpg']",,,,"['54.330034', '10.1482026']","{'coordinates': ['54.330034', '10.1482026']}" https://mesocosm.org/mesocosm/the-sven-loven-centre-for-marine-sciences/,The Sven Lovén Centre for Marine Sciences,University of Gothenburg,Sweden,Europe,"University of Gothenburg PO Box 100, SE-405 30 Gothenburg, SWEDEN Visiting address: Vasaparken @@ -2662,7 +2661,7 @@ ecotrons -",['http://mesocosm.org/wp-content/uploads/2017/05/marine-ecotron.jpg'],,,,"['58.2498484', '11.4449296']","{'coordinates': ['58.2498484', '11.4449296']}" +",['http://mesocosm.org/wp-content/uploads/2017/05/marine-ecotron.jpg'],,,,"['58.2498484', '11.4449296']","{'coordinates': ['58.2498484', '11.4449296']}" https://mesocosm.org/mesocosm/medimeer-mediterranean-platform-for-marine-ecosystem-experimental-research/,MEDIMEER (MEDIterranean platform for Marine Ecosystem Experimental Research),CNRS,France,Europe,"MEDIMEER 2 Rue des Chantiers 34200, Sète @@ -2709,7 +2708,7 @@ Fig.3 LAMP in Dia Island, Crete (Photo: Dr. Behzad Mostajir) -","['http://mesocosm.org/wp-content/uploads/2017/03/Fig.1-Permanent-floating-structure-Photo-Dr.-Behzad-Mostajir.png', 'http://mesocosm.org/wp-content/uploads/2017/03/Fig.2-Pelagic-mesocosms-Photo-Dr.-Behzad-Mostajir.png', 'http://mesocosm.org/wp-content/uploads/2017/02/LAMP-300x129.png']",,,,"['43.4118721', '3.6907914']","{'coordinates': ['43.4118721', '3.6907914']}" +","['http://mesocosm.org/wp-content/uploads/2017/03/Fig.1-Permanent-floating-structure-Photo-Dr.-Behzad-Mostajir.png', 'http://mesocosm.org/wp-content/uploads/2017/03/Fig.2-Pelagic-mesocosms-Photo-Dr.-Behzad-Mostajir.png', 'http://mesocosm.org/wp-content/uploads/2017/02/LAMP-300x129.png']",,,,"['43.4118721', '3.6907914']","{'coordinates': ['43.4118721', '3.6907914']}" https://mesocosm.org/mesocosm/rsd-facility/,RSD Facility,Faculty of Food Sciences and Fisheries,Poland,Europe,"Kazimierza Królewicza 4, 71550 Szczecin, Poland ","Remigiusz Panicz Please login or request access to view contact information. @@ -2777,7 +2776,7 @@ Kempter J., Kiełpiński M., Panicz R., Sadowski J., Mysłowski B., Bergmann S. -","['http://mesocosm.org/wp-content/uploads/2019/03/RSD-Facility-300x177.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-69-of-76-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-22-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-20-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-19-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/PART_1548849527972-225x300.jpeg']",,,,"['53.209861', '14.463944']","{'coordinates': ['53.209861', '14.463944']}" +","['http://mesocosm.org/wp-content/uploads/2019/03/RSD-Facility-300x177.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-69-of-76-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-22-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-20-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-19-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/PART_1548849527972-225x300.jpeg']",,,,"['53.209861', '14.463944']","{'coordinates': ['53.209861', '14.463944']}" https://mesocosm.org/mesocosm/rsd-facility/,RSD Facility,Faculty of Food Sciences and Fisheries,Poland,Europe,"Kazimierza Królewicza 4, 71550 Szczecin, Poland ","Remigiusz Panicz Please login or request access to view contact information. @@ -2845,7 +2844,7 @@ Kempter J., Kiełpiński M., Panicz R., Sadowski J., Mysłowski B., Bergmann S. -","['http://mesocosm.org/wp-content/uploads/2019/03/RSD-Facility-300x177.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-69-of-76-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-22-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-20-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-19-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/PART_1548849527972-225x300.jpeg']",,,,"['53.44505', '14.562861']","{'coordinates': ['53.44505', '14.562861']}" +","['http://mesocosm.org/wp-content/uploads/2019/03/RSD-Facility-300x177.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-69-of-76-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-22-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-20-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-19-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/PART_1548849527972-225x300.jpeg']",,,,"['53.44505', '14.562861']","{'coordinates': ['53.44505', '14.562861']}" https://mesocosm.org/mesocosm/gault-nature-reserve-mesocosm-platform/,Gault Nature Reserve Mesocosm Platform,McGill University,Canada,North America,"845 Sherbrooke St W Montreal QC H3A 0G4 @@ -2916,7 +2915,7 @@ Photo credit: Egor Katkov -","['http://mesocosm.org/wp-content/uploads/2019/08/Gault-Mesocosms-4-credit-Gregor-Fussmann-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2019/08/Gault-Mesocosms-2-credit-Egor-Katkov-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2019/08/Gault-Mesocosms-5-credit-Gregor-Fussmann-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2019/08/Gault-Mesocosms-3-credit-Egor-Katkov-1024x576.jpg']",,,,"['45.543060', ' -73.150762']","{'coordinates': ['45.543060', '-73.150762']}" +","['http://mesocosm.org/wp-content/uploads/2019/08/Gault-Mesocosms-4-credit-Gregor-Fussmann-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2019/08/Gault-Mesocosms-2-credit-Egor-Katkov-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2019/08/Gault-Mesocosms-5-credit-Gregor-Fussmann-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2019/08/Gault-Mesocosms-3-credit-Egor-Katkov-1024x576.jpg']",,,,"['45.543060', ' -73.150762']","{'coordinates': ['45.543060', '-73.150762']}" https://mesocosm.org/mesocosm/silwood-mesocosm-facility-smf/,Silwood Mesocosm Facility (SMF),Imperial College London,United Kingdom,Europe,"Silwood Park Campus, Imperial College London, Ascot, UK ","Prof. Guy Woodward, Please login or request access to view contact information.;  Dr. Michelle Jackson,Please login or request access to view contact information.m.jackson@imperial.ac.ukPlease login or request access to view contact information.; @@ -2942,7 +2941,7 @@ Dr. Emma Ransome,Please login or request access to view contact information.e.ra -","['http://mesocosm.org/wp-content/uploads/2017/03/SMF-1.png', 'http://mesocosm.org/wp-content/uploads/2017/03/SMF-2.jpg']",,,,"['51.51772460', '-0.17322940']","{'coordinates': ['51.51772460', '-0.17322940']}" +","['http://mesocosm.org/wp-content/uploads/2017/03/SMF-1.png', 'http://mesocosm.org/wp-content/uploads/2017/03/SMF-2.jpg']",,,,"['51.51772460', '-0.17322940']","{'coordinates': ['51.51772460', '-0.17322940']}" https://mesocosm.org/mesocosm/exstream-system-china/,ExStream System China,Xi'an Jiaotong-Liverpool University,China,Asia,"Xi’an Jiaotong-Liverpool University 111 Ren’ai Road, Suzhou Dushu Lake Science and Education Innovation District Suzhou Industrial Park Suzhou, Jiangsu Province, @@ -2998,7 +2997,7 @@ Figure credit: Jeremy (Jay) Piggott -","['http://mesocosm.org/wp-content/uploads/2018/10/34498B12-BD94-4312-8FFD-C92FA6BA75D4@tcd.ie_-e1540461299359-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/54889AEB-229B-40CC-8773-52FAD7DE72D2@tcd.ie_-e1540461322675-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/F8410BFC-4161-4E95-9D6E-A1CBDECD2109@tcd.ie_-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"['31.276111', ' 120.7325']","{'coordinates': ['31.276111', '120.7325']}" +","['http://mesocosm.org/wp-content/uploads/2018/10/34498B12-BD94-4312-8FFD-C92FA6BA75D4@tcd.ie_-e1540461299359-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/54889AEB-229B-40CC-8773-52FAD7DE72D2@tcd.ie_-e1540461322675-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/F8410BFC-4161-4E95-9D6E-A1CBDECD2109@tcd.ie_-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"['31.276111', ' 120.7325']","{'coordinates': ['31.276111', '120.7325']}" https://mesocosm.org/mesocosm/exstream-system-china/,ExStream System China,Xi'an Jiaotong-Liverpool University,China,Asia,"Xi’an Jiaotong-Liverpool University 111 Ren’ai Road, Suzhou Dushu Lake Science and Education Innovation District Suzhou Industrial Park Suzhou, Jiangsu Province, @@ -3054,7 +3053,7 @@ Figure credit: Jeremy (Jay) Piggott -","['http://mesocosm.org/wp-content/uploads/2018/10/34498B12-BD94-4312-8FFD-C92FA6BA75D4@tcd.ie_-e1540461299359-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/54889AEB-229B-40CC-8773-52FAD7DE72D2@tcd.ie_-e1540461322675-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/F8410BFC-4161-4E95-9D6E-A1CBDECD2109@tcd.ie_-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"[' 30.118056', ' 118.023889']","{'coordinates': ['30.118056', '118.023889']}" +","['http://mesocosm.org/wp-content/uploads/2018/10/34498B12-BD94-4312-8FFD-C92FA6BA75D4@tcd.ie_-e1540461299359-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/54889AEB-229B-40CC-8773-52FAD7DE72D2@tcd.ie_-e1540461322675-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/F8410BFC-4161-4E95-9D6E-A1CBDECD2109@tcd.ie_-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"[' 30.118056', ' 118.023889']","{'coordinates': ['30.118056', '118.023889']}" https://mesocosm.org/mesocosm/exstream-system-ireland/,ExStream System Ireland,University College Dublin in collaboration with Trinity College Dublin,Ireland,Europe,"Belfield, Dublin 4 ","Assoc. Prof. Mary Kelly-Quinn ExStream network coordinator Asst. Prof. Jeremy J. Piggott @@ -3100,7 +3099,7 @@ Figure credit: Jeremy (Jay) Piggott   -","['http://mesocosm.org/wp-content/uploads/2018/05/IMG_1176-683x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/DJI_0011-1024x575.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"['53.307444', ' -6.227611']","{'coordinates': ['53.307444', '-6.227611']}" +","['http://mesocosm.org/wp-content/uploads/2018/05/IMG_1176-683x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/DJI_0011-1024x575.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"['53.307444', ' -6.227611']","{'coordinates': ['53.307444', '-6.227611']}" https://mesocosm.org/mesocosm/lunz-mesocosm-infrastructure-lmi/,Lunz Mesocosm Infrastructure (LMI),WCL - WasserCluster Lunz,Austria,Europe,"1) WCL – WasserCluster Lunz Dr. Carl Kupelwieser Promenade 5 A-3293 Lunz am See @@ -3181,7 +3180,7 @@ https://mesocosm.org/mesocosm/lunz-mesocosm-infrastructure-lmi/,Lunz Mesocosm In -","['http://mesocosm.org/wp-content/uploads/2017/02/Ptacnik-Lunz_400-300x226.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Kainz_mesocosms_400-300x224.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/HyTEC_1_400px-300x300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/HyTEC_2_400px-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/HyTEC_3_400px-296x300.jpg']",,,,"['47.8598408', '15.030520']","{'coordinates': ['47.8598408', '15.030520']}" +","['http://mesocosm.org/wp-content/uploads/2017/02/Ptacnik-Lunz_400-300x226.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Kainz_mesocosms_400-300x224.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/HyTEC_1_400px-300x300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/HyTEC_2_400px-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/HyTEC_3_400px-296x300.jpg']",,,,"['47.8598408', '15.030520']","{'coordinates': ['47.8598408', '15.030520']}" https://mesocosm.org/mesocosm/shear-turbulence-resuspension-mesocosm-sturm-facility/,Shear TUrbulence Resuspension Mesocosm (STURM) facility,The University of Baltimore (UBalt),United States of America,North America,"UBalt STURM facility located at: Patuxent Environmental and Aquatic Research Laboratory (PEARL), Morgan State University, @@ -3218,7 +3217,7 @@ turbidity monitoring temperature monitoring ","No lodging -",,,,,,,"['38.39364902663247', '-76.50512446172259']","{'coordinates': ['38.39364902663247', '-76.50512446172259']}" +",,,,,,,"['38.39364902663247', '-76.50512446172259']","{'coordinates': ['38.39364902663247', '-76.50512446172259']}" https://mesocosm.org/mesocosm/the-river-laboratory-heated-pond-mesocosms/,The River Laboratory heated pond mesocosms,Queen Mary University of London,United Kingdom,Europe,"QMUL Mile End Road London E1 4NS @@ -3273,7 +3272,7 @@ Foto credit: Yizhu Zhu -","['http://mesocosm.org/wp-content/uploads/2018/11/Ponds-1-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/Ponds-2-e1542903074614-768x1024.jpg']",,,,"['50.6666667', ' -2.1666666666666665']","{'coordinates': ['50.6666667', '-2.1666666666666665']}" +","['http://mesocosm.org/wp-content/uploads/2018/11/Ponds-1-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/Ponds-2-e1542903074614-768x1024.jpg']",,,,"['50.6666667', ' -2.1666666666666665']","{'coordinates': ['50.6666667', '-2.1666666666666665']}" https://mesocosm.org/mesocosm/exstream-system-germany/,ExStream System Germany,"University of Duisburg-Essen, Aquatic Ecosystem Research",Germany,Europe,"University of Duisburg-Essen, Aquatic Ecosystem Research Universitaetsstrasse 5 D-45141 Essen @@ -3331,7 +3330,7 @@ Figure credti: Jeremy (Jay) Piggott   -","['http://mesocosm.org/wp-content/uploads/2018/05/Beerman-et-al-2017-SOTEN-1024x892.png', 'http://mesocosm.org/wp-content/uploads/2018/05/Breitenbach1.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Felderbach2-452x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"['51.349722', ' 7.170583']","{'coordinates': ['51.349722', '7.170583']}" +","['http://mesocosm.org/wp-content/uploads/2018/05/Beerman-et-al-2017-SOTEN-1024x892.png', 'http://mesocosm.org/wp-content/uploads/2018/05/Breitenbach1.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Felderbach2-452x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"['51.349722', ' 7.170583']","{'coordinates': ['51.349722', '7.170583']}" https://mesocosm.org/mesocosm/albufera-biological-station/,Albufera Biological Station,University of Valencia,Spain,Europe,"Catedrático José Beltrán 2, 46980 Paterna (Spain) @@ -3379,7 +3378,7 @@ photo credits: Pablo Amador   photo credits: Pablo Amador   -","['http://mesocosm.org/wp-content/uploads/2023/12/Andreu-Rico-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/Andreu-Rico-768x1024.jpeg', 'http://mesocosm.org/wp-content/uploads/2023/12/Pablo-Amador-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/Pablo-Amador-2-768x1024.jpg']",,,,"['39.315582', ' -0.318789']","{'coordinates': ['39.315582', '-0.318789']}" +","['http://mesocosm.org/wp-content/uploads/2023/12/Andreu-Rico-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/Andreu-Rico-768x1024.jpeg', 'http://mesocosm.org/wp-content/uploads/2023/12/Pablo-Amador-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/Pablo-Amador-2-768x1024.jpg']",,,,"['39.315582', ' -0.318789']","{'coordinates': ['39.315582', '-0.318789']}" https://mesocosm.org/mesocosm/mobicos-mobile-aquatic-mesocosm/,MOBICOS - Mobile Aquatic Mesocosm,Helmholtz Zentrum für Umweltforschung-UFZ,Germany,Europe,"Helmholtz Zentrum für Umweltforschung-UFZ Brückstr. 3a 39114 Magdeburg @@ -3398,7 +3397,7 @@ mobile containers to be deployed in or at rivers, reservoirs and lakes;  includ 52.1205333,11.627623699999958 ",,,,,"http://www.ufz.de/index.php?de=22241 -https://www.ufz.de/index.php?en=39611 +https://www.ufz.de/index.php?en=39611 "," @@ -3416,7 +3415,7 @@ In the MOBICOS-container scientists can experimentally comparare the growth of m -","['http://mesocosm.org/wp-content/uploads/2017/05/Mobicos_container500px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Muschelaquarien_200px.jpg']",,,,"['52.1205333', '11.627623699999958']","{'coordinates': ['52.1205333', '11.627623699999958']}" +","['http://mesocosm.org/wp-content/uploads/2017/05/Mobicos_container500px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Muschelaquarien_200px.jpg']",,,,"['52.1205333', '11.627623699999958']","{'coordinates': ['52.1205333', '11.627623699999958']}" https://mesocosm.org/mesocosm/igb-lakelab/,IGB LakeLab,Leibniz-Institute for Freshwater Ecology and Inland Fisheries (IGB),Germany,Europe,"Leibniz-Institute for Freshwater Ecology and Inland Fisheries (IGB) Müggelseedamm 310 12587 Berlin @@ -3446,7 +3445,7 @@ a height-adjustable water recirculation system with a perforated ring, rising c ","http://www.lake-lab.de http://www.seelabor.de/ ","Schematic diagram of the LakeLab in Lake Stechlin, northeastern Germany Aerial photograph of the LakeLab in Lake Stechlin Photo credit: HTW Dresden-Oczipka Photo credit: P. Casper, IGB -","['http://mesocosm.org/wp-content/uploads/2017/02/Stechlin_DE_graphics_400px-300x272.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Areal_photo_©HTWDresden-Oczipka_400px-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/lakelab_map-300x111.jpg']",,,,"['53.1520282', '13.0233035']","{'coordinates': ['53.1520282', '13.0233035']}" +","['http://mesocosm.org/wp-content/uploads/2017/02/Stechlin_DE_graphics_400px-300x272.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Areal_photo_©HTWDresden-Oczipka_400px-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/lakelab_map-300x111.jpg']",,,,"['53.1520282', '13.0233035']","{'coordinates': ['53.1520282', '13.0233035']}" https://mesocosm.org/mesocosm/center-for-coastal-environmental-health-and-biomolecular-research-ccehbr/,Center for Coastal Environmental Health and Biomolecular Research-CCEHBR,National Oceanic and Atmospheric Administration Center - NOAA,USA,North-America,"National Oceanic and Atmospheric Administration Center – NOAA ","Dr. Mike Fulton Please login or request access to view contact information. @@ -3480,7 +3479,7 @@ Mesocosm installation -","['http://mesocosm.org/wp-content/uploads/2017/05/Cherleston_meso3.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Charleston-mesocosms.jpg']",,,,"['32.7524467', '-79.8986098']","{'coordinates': ['32.7524467', '-79.8986098']}" +","['http://mesocosm.org/wp-content/uploads/2017/05/Cherleston_meso3.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Charleston-mesocosms.jpg']",,,,"['32.7524467', '-79.8986098']","{'coordinates': ['32.7524467', '-79.8986098']}" https://mesocosm.org/mesocosm/archipelago-benthic-mesocosm-network/,Archipelago Benthic Mesocosm Network,Åbo Akademi University,Finland,Europe,"Henrikinkatu 2, 20500 Åbo/Turku, Finland @@ -3531,7 +3530,7 @@ programmable climate simulation (GHL) ","https://www.abo.fi/en/emb-research-infrastructure/mesocosms/ https://pansch-research.com/?page_id=1592 ","Korpoström mesocosm tanks are equipped with constant flow and circulation of seawater from the adjacent bay. Electrical cabinets currently provide the possibility for monitoring and manipulation of seawater temperature. Seagrass shoots (upper left panel) are planted into separate sediment trays, photo credits: Christian Pansch Hattich Korpoström mesocosm system located at the Skärgårdscentrum Korpoström, Finland. 20 600L tanks receive seawater from the adjacent bay, photo credits: Christian Pansch-Hattich Husö mesocosm system located at Husö Biological Station, Åland, Finland. Seawater temperature monitoring and manipulation is achieved through Aqua Medic and GHL controlling units, as well as Aqua Medic cooling and Schego heading devices. photo credits: Christian Pansch-Hattich Husö mesocosm system located at Husö Biological Station, Åland, Finland. 20 600L tanks receive a flow-through of seawater from the adjacent bay. Christian Pansch-Hattich -","['http://mesocosm.org/wp-content/uploads/2024/07/3_small-1024x530.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/2_small-1024x567.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/5_small-1024x565.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/4_small-1024x560.jpg']",,,,"['60.1102778', '21.598055555555554']","{'coordinates': ['60.1102778', '21.598055555555554']}" +","['http://mesocosm.org/wp-content/uploads/2024/07/3_small-1024x530.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/2_small-1024x567.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/5_small-1024x565.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/4_small-1024x560.jpg']",,,,"['60.1102778', '21.598055555555554']","{'coordinates': ['60.1102778', '21.598055555555554']}" https://mesocosm.org/mesocosm/archipelago-benthic-mesocosm-network/,Archipelago Benthic Mesocosm Network,Åbo Akademi University,Finland,Europe,"Henrikinkatu 2, 20500 Åbo/Turku, Finland @@ -3582,7 +3581,7 @@ programmable climate simulation (GHL) ","https://www.abo.fi/en/emb-research-infrastructure/mesocosms/ https://pansch-research.com/?page_id=1592 ","Korpoström mesocosm tanks are equipped with constant flow and circulation of seawater from the adjacent bay. Electrical cabinets currently provide the possibility for monitoring and manipulation of seawater temperature. Seagrass shoots (upper left panel) are planted into separate sediment trays, photo credits: Christian Pansch Hattich Korpoström mesocosm system located at the Skärgårdscentrum Korpoström, Finland. 20 600L tanks receive seawater from the adjacent bay, photo credits: Christian Pansch-Hattich Husö mesocosm system located at Husö Biological Station, Åland, Finland. Seawater temperature monitoring and manipulation is achieved through Aqua Medic and GHL controlling units, as well as Aqua Medic cooling and Schego heading devices. photo credits: Christian Pansch-Hattich Husö mesocosm system located at Husö Biological Station, Åland, Finland. 20 600L tanks receive a flow-through of seawater from the adjacent bay. Christian Pansch-Hattich -","['http://mesocosm.org/wp-content/uploads/2024/07/3_small-1024x530.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/2_small-1024x567.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/5_small-1024x565.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/4_small-1024x560.jpg']",,,,"['60.2794444', '19.83138888888889']","{'coordinates': ['60.2794444', '19.83138888888889']}" +","['http://mesocosm.org/wp-content/uploads/2024/07/3_small-1024x530.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/2_small-1024x567.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/5_small-1024x565.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/4_small-1024x560.jpg']",,,,"['60.2794444', '19.83138888888889']","{'coordinates': ['60.2794444', '19.83138888888889']}" https://mesocosm.org/mesocosm/syke-mrc-marine-research-centre-mesocosm-facility/,SYKE-MRC (Marine Research Centre) Mesocosm Facility,Marine Research Centre,Finland,Europe,"Marine Research Centre (MRC) Finnish Environment Institute SYKE P.O.Box 140 @@ -3621,7 +3620,7 @@ SYKE-MRC field mesocosm work at Tvärminne -","['http://mesocosm.org/wp-content/uploads/2017/02/plankton-tower-153x300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['60.203843', '24.9617237']","{'coordinates': ['60.203843', '24.9617237']}" +","['http://mesocosm.org/wp-content/uploads/2017/02/plankton-tower-153x300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['60.203843', '24.9617237']","{'coordinates': ['60.203843', '24.9617237']}" https://mesocosm.org/mesocosm/uib-mesocosm-centre-university-of-bergen-mesocosm-centre/,UiB Mesocosm Centre (University of Bergen Mesocosm Centre),University of Bergen (UiB),Norway,Europe,"University of Bergen (UiB) Department of Biology PO-Box 7803 @@ -3667,7 +3666,7 @@ Fig.2 Land-based mesocosms (Photo: Stella A Berger) Nutrient composition, add/remove mesozooplankton, CO2/pH Land based tanks Nutrient composition, add/remove mesozooplankton CO2/pH, salinity, adjust light and temperature -","['60.2695262', '5.2234965']","{'coordinates': ['60.2695262', '5.2234965']}" +","['60.2695262', '5.2234965']","{'coordinates': ['60.2695262', '5.2234965']}" https://mesocosm.org/mesocosm/marine-ecosystems-research-laboratory-merl/,Marine Ecosystems Research Laboratory - MERL,University of Rhode Island,USA,North-America,"University of Rhode Island ","Prof. Candace Oviatt Please login or request access to view contact information. @@ -3713,7 +3712,7 @@ Schema of the MERL construction -","['http://mesocosm.org/wp-content/uploads/2017/05/merl_300.gif', 'http://mesocosm.org/wp-content/uploads/2017/05/Narragansett-US-RIMERL-deck_400.gif', 'http://mesocosm.org/wp-content/uploads/2017/05/Narragansett-US-RImerltankpic5_400.jpg']",,,,"['41.49175', '-71.4207629']","{'coordinates': ['41.49175', '-71.4207629']}" +","['http://mesocosm.org/wp-content/uploads/2017/05/merl_300.gif', 'http://mesocosm.org/wp-content/uploads/2017/05/Narragansett-US-RIMERL-deck_400.gif', 'http://mesocosm.org/wp-content/uploads/2017/05/Narragansett-US-RImerltankpic5_400.jpg']",,,,"['41.49175', '-71.4207629']","{'coordinates': ['41.49175', '-71.4207629']}" https://mesocosm.org/mesocosm/artificial-stream-and-pond-system-fsa/,Artificial Stream and Pond System (FSA),German Environment Agency,Germany,Europe,"German Environment Agency ","Ralf Schmidt Please login or request access to view contact information. @@ -3755,7 +3754,7 @@ Outdoor streams © Umweltbundesamt -","['http://mesocosm.org/wp-content/uploads/2017/02/Berlin_Marienfelde_aussen.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Berlin-Marienfelde_aussenan-300x185.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Berlin_Marienfelde_rinne_aus.jpg']",,,,"['52.4107352', '13.3756523']","{'coordinates': ['52.4107352', '13.3756523']}" +","['http://mesocosm.org/wp-content/uploads/2017/02/Berlin_Marienfelde_aussen.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Berlin-Marienfelde_aussenan-300x185.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Berlin_Marienfelde_rinne_aus.jpg']",,,,"['52.4107352', '13.3756523']","{'coordinates': ['52.4107352', '13.3756523']}" https://mesocosm.org/mesocosm/the-river-laboratory-experimental-stream-channel-mesocosms/,The River Laboratory experimental stream channel mesocosms,Queen Mary University of London,United Kingdom,Europe,"QMUL Mile End Road London E1 4NS @@ -3820,7 +3819,7 @@ Foto credit: Iwan Jones   -","['http://mesocosm.org/wp-content/uploads/2018/11/Streams-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/Streams-4-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/Streams-1-1024x768.jpg']",,,,"['50.6666667', ' -2.1833330555555555']","{'coordinates': ['50.6666667', '-2.1833330555555555']}" +","['http://mesocosm.org/wp-content/uploads/2018/11/Streams-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/Streams-4-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/Streams-1-1024x768.jpg']",,,,"['50.6666667', ' -2.1833330555555555']","{'coordinates': ['50.6666667', '-2.1833330555555555']}" https://mesocosm.org/mesocosm/au-lake-mesocosm-warming-experiment-lmwe/,AU Lake Mesocosm Warming Experiment (LMWE),Aarhus University (AU),Denmark,Europe,"Aarhus University (AU) Nordre Ringgade 1 8000 Aarhus C @@ -3854,7 +3853,7 @@ Mesocosm tanks in Silkeborg, DK -","['http://mesocosm.org/wp-content/uploads/2017/02/silkeborg_mesocosm_schema-300x210.png', 'http://mesocosm.org/wp-content/uploads/2017/02/silkeborg_mesocosm-300x223.png']",,,,"['56.244846', '9.529916']","{'coordinates': ['56.244846', '9.529916']}" +","['http://mesocosm.org/wp-content/uploads/2017/02/silkeborg_mesocosm_schema-300x210.png', 'http://mesocosm.org/wp-content/uploads/2017/02/silkeborg_mesocosm-300x223.png']",,,,"['56.244846', '9.529916']","{'coordinates': ['56.244846', '9.529916']}" https://mesocosm.org/mesocosm/awri-mesocosm-facility/,AWRI mesocosm facility,"Annis Water Resources Institute, Grand Valley State University",USA,North America,"740 West Shoreline Drive Muskegon, Michigan 49441 @@ -3909,7 +3908,7 @@ Photo credits: AWRI GVSU -","['http://mesocosm.org/wp-content/uploads/2022/09/Full_field-station_2.1-683x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2022/09/mesocosm.1-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2022/09/P3080003.jpg']",,,,"['43.224194', '-86.235809']","{'coordinates': ['43.224194', '-86.235809']}" +","['http://mesocosm.org/wp-content/uploads/2022/09/Full_field-station_2.1-683x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2022/09/mesocosm.1-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2022/09/P3080003.jpg']",,,,"['43.224194', '-86.235809']","{'coordinates': ['43.224194', '-86.235809']}" https://mesocosm.org/mesocosm/gropello-21026-gaviratevarese/,"Gropello, 21026 Gavirate/Varese",Institut Dr. Nowak (a),Italy,Europe,"Institut Dr. Nowak (a) Abteilung Limnologie Mayenbrook 1 @@ -3966,7 +3965,7 @@ Location of Lago di Varese: Latitude 45.818369; Longitude 8.738972 -","['http://mesocosm.org/wp-content/uploads/2017/05/Lago_di_Varese_1_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lago_di_Varese_2_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lago_di_Varese_construction_300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/LagodiVarese_300.png']",,,,"['45.799026', '8.7300945']","{'coordinates': ['45.799026', '8.7300945']}" +","['http://mesocosm.org/wp-content/uploads/2017/05/Lago_di_Varese_1_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lago_di_Varese_2_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lago_di_Varese_construction_300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/LagodiVarese_300.png']",,,,"['45.799026', '8.7300945']","{'coordinates': ['45.799026', '8.7300945']}" https://mesocosm.org/mesocosm/exstream-system-new-zealand/,ExStream System New Zealand,"University of Otago, Department of Zoology",New Zealand,Australasia,"340 Great King St Dunedin 9054 New Zealand @@ -4030,7 +4029,7 @@ Figure credit: Jeremy (Jay) Piggott ​   -","['http://mesocosm.org/wp-content/uploads/2018/10/Piggott-et-al.-2015-Global-Change-Biology-21-206-222.-959x1024.png', 'http://mesocosm.org/wp-content/uploads/2018/10/Kauru-ExStream-Under-the-Rainbow-1024x589.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/ExStream-mesocosms-960x1024.png', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"['-45.06337', ' 170.44303']","{'coordinates': ['-45.06337', '170.44303']}" +","['http://mesocosm.org/wp-content/uploads/2018/10/Piggott-et-al.-2015-Global-Change-Biology-21-206-222.-959x1024.png', 'http://mesocosm.org/wp-content/uploads/2018/10/Kauru-ExStream-Under-the-Rainbow-1024x589.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/ExStream-mesocosms-960x1024.png', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"['-45.06337', ' 170.44303']","{'coordinates': ['-45.06337', '170.44303']}" https://mesocosm.org/mesocosm/mesocosms-experimental-garden-radboud-university/,Mesocosms – experimental garden Radboud University,Radboud University,Netherlands,Europe,"Comeniuslaan 4, 6525 HP Nijmegen "," Sarian Kosten Please login or request access to view contact information. @@ -4070,7 +4069,7 @@ Photo credit: Sarian Kosten -","['http://mesocosm.org/wp-content/uploads/2019/03/Radboud_mesocosm1-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Radboud_mesocosm2-300x169.jpg']",,,,"['51.822777', '5.8733333']","{'coordinates': ['51.822777', '5.8733333']}" +","['http://mesocosm.org/wp-content/uploads/2019/03/Radboud_mesocosm1-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Radboud_mesocosm2-300x169.jpg']",,,,"['51.822777', '5.8733333']","{'coordinates': ['51.822777', '5.8733333']}" https://mesocosm.org/mesocosm/hungarian-pond-network/,Hungarian Pond Network,Centre for Ecological Research,Hungary,Europe,"Centre for Ecological Research H-1113 Budapest, Karolina út 29. Hungary @@ -4104,7 +4103,7 @@ A mesocosm at the Fülöpháza HPN facility. (Photo credit: Csaba Vad) The Vácrátót HPN mesocosm facility during winter. (Photo credit: Csilla Laskai) A mesocosm at the Zánka facility. (Phto credit: Csilla Laskai)   -","['http://mesocosm.org/wp-content/uploads/2024/01/Photo-1.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-2-1024x461.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/photo-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-4-1024x768.jpg']",,,,"['47.705277833333334', '19.228137999999998']","{'coordinates': ['47.705277833333334', '19.228137999999998']}" +","['http://mesocosm.org/wp-content/uploads/2024/01/Photo-1.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-2-1024x461.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/photo-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-4-1024x768.jpg']",,,,"['47.705277833333334', '19.228137999999998']","{'coordinates': ['47.705277833333334', '19.228137999999998']}" https://mesocosm.org/mesocosm/hungarian-pond-network/,Hungarian Pond Network,Centre for Ecological Research,Hungary,Europe,"Centre for Ecological Research H-1113 Budapest, Karolina út 29. Hungary @@ -4138,7 +4137,7 @@ A mesocosm at the Fülöpháza HPN facility. (Photo credit: Csaba Vad) The Vácrátót HPN mesocosm facility during winter. (Photo credit: Csilla Laskai) A mesocosm at the Zánka facility. (Phto credit: Csilla Laskai)   -","['http://mesocosm.org/wp-content/uploads/2024/01/Photo-1.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-2-1024x461.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/photo-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-4-1024x768.jpg']",,,,"['46.870555555555555', '19.422222222222224']","{'coordinates': ['46.870555555555555', '19.422222222222224']}" +","['http://mesocosm.org/wp-content/uploads/2024/01/Photo-1.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-2-1024x461.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/photo-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-4-1024x768.jpg']",,,,"['46.870555555555555', '19.422222222222224']","{'coordinates': ['46.870555555555555', '19.422222222222224']}" https://mesocosm.org/mesocosm/hungarian-pond-network/,Hungarian Pond Network,Centre for Ecological Research,Hungary,Europe,"Centre for Ecological Research H-1113 Budapest, Karolina út 29. Hungary @@ -4172,7 +4171,7 @@ A mesocosm at the Fülöpháza HPN facility. (Photo credit: Csaba Vad) The Vácrátót HPN mesocosm facility during winter. (Photo credit: Csilla Laskai) A mesocosm at the Zánka facility. (Phto credit: Csilla Laskai)   -","['http://mesocosm.org/wp-content/uploads/2024/01/Photo-1.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-2-1024x461.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/photo-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-4-1024x768.jpg']",,,,"['46.88', '17.66861111111111']","{'coordinates': ['46.88', '17.66861111111111']}" +","['http://mesocosm.org/wp-content/uploads/2024/01/Photo-1.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-2-1024x461.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/photo-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-4-1024x768.jpg']",,,,"['46.88', '17.66861111111111']","{'coordinates': ['46.88', '17.66861111111111']}" https://mesocosm.org/mesocosm/hungarian-pond-network/,Hungarian Pond Network,Centre for Ecological Research,Hungary,Europe,"Centre for Ecological Research H-1113 Budapest, Karolina út 29. Hungary @@ -4206,7 +4205,7 @@ A mesocosm at the Fülöpháza HPN facility. (Photo credit: Csaba Vad) The Vácrátót HPN mesocosm facility during winter. (Photo credit: Csilla Laskai) A mesocosm at the Zánka facility. (Phto credit: Csilla Laskai)   -","['http://mesocosm.org/wp-content/uploads/2024/01/Photo-1.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-2-1024x461.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/photo-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-4-1024x768.jpg']",,,,"['47.603611111111114', '21.3575']","{'coordinates': ['47.603611111111114', '21.3575']}" +","['http://mesocosm.org/wp-content/uploads/2024/01/Photo-1.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-2-1024x461.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/photo-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-4-1024x768.jpg']",,,,"['47.603611111111114', '21.3575']","{'coordinates': ['47.603611111111114', '21.3575']}" https://mesocosm.org/mesocosm/marine-plant-mesocosm-system/,Marine Plant Mesocosm System,CCMAR – Centre of Marine Sciences,Portugal,Europe,"Universidade do Algarve Campus de Gambelas, Ed.7 8005-139 Faro @@ -4254,7 +4253,7 @@ Photo credit: João Silva -","['http://mesocosm.org/wp-content/uploads/2018/05/CCMAR_mesocosm_2-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/CCMAR_mesocosm_1-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/CCMAR_mesocosm_3.jpg']",,,,"['37.006', ' -7.966']","{'coordinates': ['37.006', '-7.966']}" +","['http://mesocosm.org/wp-content/uploads/2018/05/CCMAR_mesocosm_2-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/CCMAR_mesocosm_1-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/CCMAR_mesocosm_3.jpg']",,,,"['37.006', ' -7.966']","{'coordinates': ['37.006', '-7.966']}" https://mesocosm.org/mesocosm/exstream-brazil/,ExStream Brazil,Universidade Federal do ABC (Federal University of ABC),Brazil,South America,"Av. dos Estados, 5001, B. Santa Terezinha, Santo André, SP, Brazil. CEP 09210-580 ","Adjunct Professor Ricardo Hideo Taniwaki Please login or request access to view contact information. @@ -4277,7 +4276,7 @@ The Experimental Stream mesocosm network (ExStream) comprises replicate installa >15 publications in scientific journals by C.D. Matthaei, J. J Piggott and coauthors (https://www.otago.ac.nz/zoology/staff/matthaei.html) Blog post: https://jappliedecologyblog.wordpress.com/2015/07/03/exstream-study-assesses-stream-ecosystem-functioning-the-effects-of-climate-warming-multiple-agricultural-stressors/ Short video about ExStream System research: https://vimeo.com/243219546 -",,,,,,"['-23.060634', ' -48.630102']","{'coordinates': ['-23.060634', '-48.630102']}" +",,,,,,"['-23.060634', ' -48.630102']","{'coordinates': ['-23.060634', '-48.630102']}" https://mesocosm.org/mesocosm/mesocosm-facility-at-umea-marine-sciences-center-mf-umsc/,Mesocosm Facility at Umeå Marine Sciences Center (MF-UMSC),Umeå Universitet (UmU),Sweden,Europe,"Umeå University (UmU)SE-90187 Umeå SWEDEN http://www.umf.umu.se/english/?languageId=1 @@ -4358,7 +4357,7 @@ MF-UMSC outdoor; Photo: K. Viklund   -","['http://mesocosm.org/wp-content/uploads/2017/03/Indoor-polyethylen-mesocosms.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/Tanks-with-light-and-temperature-control.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/ice-tanks_1-300x199.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/DSC_1798-300x199.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/DSC_1801-300x199.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/INDOOR-300x199.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/OUTDOOR-300x199.jpg']",,,,"['63.5678349', '19.8206221']","{'coordinates': ['63.5678349', '19.8206221']}" +","['http://mesocosm.org/wp-content/uploads/2017/03/Indoor-polyethylen-mesocosms.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/Tanks-with-light-and-temperature-control.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/ice-tanks_1-300x199.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/DSC_1798-300x199.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/DSC_1801-300x199.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/INDOOR-300x199.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/OUTDOOR-300x199.jpg']",,,,"['63.5678349', '19.8206221']","{'coordinates': ['63.5678349', '19.8206221']}" https://mesocosm.org/mesocosm/alpstream-eco-hydraulic-flumes/,ALPSTREAM ECO-HYDRAULIC FLUMES,ALPSTREAM – Alpine Stream Research Center/MONVISO PARK,Italy,Europe,"Frazione S. Antonio 17, I-12030 Sant’Antonio Ostana (CN)   @@ -4429,7 +4428,7 @@ from window of the ALPSTREAM lab, photo credits: Elisa Falasco Guesthouse, photo credits: VisoaViso cooperative Indoor space of the ALPSTREAM lab, photo credit: Stefano Fenoglio Ostana landscape, photo credits: Stefano Fenoglio -","['http://mesocosm.org/wp-content/uploads/2023/03/Flumes-1024x413.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/aerial-view-flumes-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/from-the-window-of-the-ALPSTREAM-lab.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/guesthouse.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/indoor-space-of-the-ALPSTREAM-lab.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/Ostana-landscape.1.9MB-1024x768.jpg']",,,,"['44.6931944', ' 7.176777777777778']","{'coordinates': ['44.6931944', '7.176777777777778']}" +","['http://mesocosm.org/wp-content/uploads/2023/03/Flumes-1024x413.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/aerial-view-flumes-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/from-the-window-of-the-ALPSTREAM-lab.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/guesthouse.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/indoor-space-of-the-ALPSTREAM-lab.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/Ostana-landscape.1.9MB-1024x768.jpg']",,,,"['44.6931944', ' 7.176777777777778']","{'coordinates': ['44.6931944', '7.176777777777778']}" https://mesocosm.org/mesocosm/yeosu-mesocosm-system/,Yeosu Mesocosm System,"Fisheries Science Institute, Chonnam National University",Republic of Korea,Asia,"50 Daehak-ro, Yeosu, Jeonnam 59626, Republic of Korea ","Prof. Ihn-Sil Kwak / Dr. Hyunbin Jo Please login or request access to view contact information. @@ -4466,7 +4465,7 @@ Reconstruction plan -","['http://mesocosm.org/wp-content/uploads/2019/03/Yeosu-Mesocosm-System-1-300x226.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Yeosu-Mesocosm-System-2-300x227.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Yeosu-Mesocosm-System-3-255x300.jpeg']",,,,"['34.627472', '127.72033']","{'coordinates': ['34.627472', '127.72033']}" +","['http://mesocosm.org/wp-content/uploads/2019/03/Yeosu-Mesocosm-System-1-300x226.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Yeosu-Mesocosm-System-2-300x227.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Yeosu-Mesocosm-System-3-255x300.jpeg']",,,,"['34.627472', '127.72033']","{'coordinates': ['34.627472', '127.72033']}" https://mesocosm.org/mesocosm/levend-lab/,Levend Lab,Leiden University,Netherlands,Europe,"Leiden University Institute of Environmental Sciences PO Box 9518 @@ -4524,7 +4523,7 @@ Photo credit: -","['http://mesocosm.org/wp-content/uploads/2018/10/1-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/2-1024x768.jpg']",,,,"['52.170726', ' 4.451855']","{'coordinates': ['52.170726', '4.451855']}" +","['http://mesocosm.org/wp-content/uploads/2018/10/1-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/2-1024x768.jpg']",,,,"['52.170726', ' 4.451855']","{'coordinates': ['52.170726', '4.451855']}" https://mesocosm.org/mesocosm/lake-baoan-field-station-of-experimental-limnological-research/,Lake Bao’an Field Station of Experimental Limnological Research,"State Key Laboratory of Freshwater Ecology and Biotechnology, Institute of Hydrobiology, Chinese Academy of Sciences",China,Asia,"No. 7 South Donghu Road,  Wuchang District, Wuhan 430072, Hubei Province, China ","Hai-Jun Wang Please login or request access to view contact information. @@ -4577,7 +4576,7 @@ Ponds for nitrogen pollution experiments -","['http://mesocosm.org/wp-content/uploads/2019/03/The-aerial-view-of-the-experimental-station-300x169.png', 'http://mesocosm.org/wp-content/uploads/2019/03/cement-aquarium-experimental-system-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Ponds-for-eutrophication-experiments-300x177.png', 'http://mesocosm.org/wp-content/uploads/2019/03/Ponds-for-nitrogen-pollution-experiments-300x189.png']",,,,"['30.28805', '114.72916']","{'coordinates': ['30.28805', '114.72916']}" +","['http://mesocosm.org/wp-content/uploads/2019/03/The-aerial-view-of-the-experimental-station-300x169.png', 'http://mesocosm.org/wp-content/uploads/2019/03/cement-aquarium-experimental-system-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Ponds-for-eutrophication-experiments-300x177.png', 'http://mesocosm.org/wp-content/uploads/2019/03/Ponds-for-nitrogen-pollution-experiments-300x189.png']",,,,"['30.28805', '114.72916']","{'coordinates': ['30.28805', '114.72916']}" https://mesocosm.org/mesocosm/tihany-outdoor-mesocosm-hungary/,Tihany Outdoor Mesocosm (Hungary),"Balaton Limnological Research Institute, Eötvös Loránd Research Network",Hungary,Europe,"Klebelsberg Kuno 3, 8237-Tihany, Hungary @@ -4638,7 +4637,7 @@ Foto credit: Ferenc Jordan ​   -","['http://mesocosm.org/wp-content/uploads/2018/11/Tihany-5-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/IMG_20181024_094852-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/IMG_20181024_104918-1024x768.jpg']",,,,"['46.9125', ' 17.893333333333334']","{'coordinates': ['46.9125', '17.893333333333334']}" +","['http://mesocosm.org/wp-content/uploads/2018/11/Tihany-5-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/IMG_20181024_094852-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/IMG_20181024_104918-1024x768.jpg']",,,,"['46.9125', ' 17.893333333333334']","{'coordinates': ['46.9125', '17.893333333333334']}" https://mesocosm.org/mesocosm/sites-aquanet-svartberget-research-station/,SITES AquaNet – Svartberget Research Station,SITES and Swedish University of Agricultural Sciences,Sweden,Europe,"Sveriges lantbruksuniversitet (SLU) Unit for Field-based Forest Research Svartberget Research Station @@ -4680,7 +4679,7 @@ Photo credti: Peder Blomkvist   -","['http://mesocosm.org/wp-content/uploads/2018/05/Svartberget_2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Svartberget_3-768x1024.jpg']",,,,"['64.143965', ' 19.455836']","{'coordinates': ['64.143965', '19.455836']}" +","['http://mesocosm.org/wp-content/uploads/2018/05/Svartberget_2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Svartberget_3-768x1024.jpg']",,,,"['64.143965', ' 19.455836']","{'coordinates': ['64.143965', '19.455836']}" https://mesocosm.org/mesocosm/cambridge-environmental-assessments-cea/,Cambridge Environmental Assessments (CEA),RSK ADAS Ltd,United Kingdom,Europe,"Cambridge Environmental Assessments, ADAS Boxworth, Cambridgeshire, CB23 4NN ","Dr Nadine Taylor Please login or request access to view contact information. @@ -4745,7 +4744,7 @@ Set-up of sloped mesocosms prior to a study (Credit: Cambridge Environmental Ass -","['http://mesocosm.org/wp-content/uploads/2019/03/Established-flat-bottomed-mesocosms-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Established-sloped-mesocosms-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Established-sloped-mesocosms-2-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Set-up-of-sloped-mesocosms-prior-to-a-study-300x225.jpg']",,,,"['52.252916', '-0.031916']","{'coordinates': ['52.252916', '-0.031916']}" +","['http://mesocosm.org/wp-content/uploads/2019/03/Established-flat-bottomed-mesocosms-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Established-sloped-mesocosms-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Established-sloped-mesocosms-2-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Set-up-of-sloped-mesocosms-prior-to-a-study-300x225.jpg']",,,,"['52.252916', '-0.031916']","{'coordinates': ['52.252916', '-0.031916']}" https://mesocosm.org/mesocosm/carl-von-ossietzky-university-oldenburg/,Planktotrons - Indoor Mesocosm Facility,Carl-von-Ossietzky University Oldenburg,Germany,Europe,"Carl-von-Ossietzky University Oldenburg Institute for Chemistry and Biology of the Marine Environment (ICBM) Schleusenstr. 1 @@ -4789,7 +4788,7 @@ Plankrtotrons in Wilhelmshaven -","['http://mesocosm.org/wp-content/uploads/2017/05/planktotrons_1_400.png', 'http://mesocosm.org/wp-content/uploads/2017/05/Planktotrons_2_400.png']",,,,"['53.5151', '8.146219999999971']","{'coordinates': ['53.5151', '8.146219999999971']}" +","['http://mesocosm.org/wp-content/uploads/2017/05/planktotrons_1_400.png', 'http://mesocosm.org/wp-content/uploads/2017/05/Planktotrons_2_400.png']",,,,"['53.5151', '8.146219999999971']","{'coordinates': ['53.5151', '8.146219999999971']}" https://mesocosm.org/mesocosm/kiel-indoor-benthokosmen-zur-simulation-von-umweltfluktuationen/,Kiel-Indoor-Benthocosms (KIBs),GEOMAR-Helmholtz Center for Ocean Research Kiel,Germany,Europe,"GEOMAR-Helmholtz Center for Ocean Research Kiel West shore campusDüsternbrooker Weg 20D-24105 Kiel East shore campusWischhofstr. 1-3D-24148 Kiel @@ -4841,7 +4840,7 @@ Graphic: Christian Pansch   -","['http://mesocosm.org/wp-content/uploads/2018/04/IMG_6896-e1523449384719-200x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2018/04/IMG_6905-e1523449507437-200x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2018/04/A-264x300.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/B-300x181.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/C-300x222.jpg']",,,,"['54.330034', ' 10.148140']","{'coordinates': ['54.330034', '10.148140']}" +","['http://mesocosm.org/wp-content/uploads/2018/04/IMG_6896-e1523449384719-200x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2018/04/IMG_6905-e1523449507437-200x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2018/04/A-264x300.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/B-300x181.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/C-300x222.jpg']",,,,"['54.330034', ' 10.148140']","{'coordinates': ['54.330034', '10.148140']}" https://mesocosm.org/mesocosm/metu-mesocosm-system/,METU Mesocosm System,Middle East Technical University (METU),Turkey,Europe,"Orta Doğu Teknik Üniversitesi (ODTÜ), Middle East Technical University (METU), Üniversiteler Mahallesi, Dumlupınar Bulvarı No:1 06800 Çankaya Ankara/TURKEY, 06800 ","Prof.Dr. Meryem Beklioğlu ","2011, 2012",,"water depth and nutrients (both TP and TN) @@ -4857,7 +4856,7 @@ https://mesocosm.org/mesocosm/metu-mesocosm-system/,METU Mesocosm System,Middle ",,,,"http://limnology.bio.metu.edu.tr "," Photo: METU-Limnology Labratory -",['http://mesocosm.org/wp-content/uploads/2017/02/METU-300x204.jpg'],,,,"['39.8897009', '32.7520139']","{'coordinates': ['39.8897009', '32.7520139']}" +",['http://mesocosm.org/wp-content/uploads/2017/02/METU-300x204.jpg'],,,,"['39.8897009', '32.7520139']","{'coordinates': ['39.8897009', '32.7520139']}" https://mesocosm.org/mesocosm/ceint-center-for-the-environmental-implications-of-nanotechnology/,CEINT-Center for the Environmental Implications of Nanotechnology,Duke University,USA,North-America,"Duke University 134 Chapel Drive Durham NC 27708 @@ -4892,7 +4891,7 @@ CEINT Mesocosm Facility   -","['http://mesocosm.org/wp-content/uploads/2017/05/Duke_mesocosms.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Duke_mesocosmsBPE.jpg']",,,,"['36.0241591', '-78.911455']","{'coordinates': ['36.0241591', '-78.911455']}" +","['http://mesocosm.org/wp-content/uploads/2017/05/Duke_mesocosms.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Duke_mesocosmsBPE.jpg']",,,,"['36.0241591', '-78.911455']","{'coordinates': ['36.0241591', '-78.911455']}" https://mesocosm.org/mesocosm/lake-mesocosms/,Lake Mesocosms,Ludwig-Maximilians-University (LMU) Munich,Germany,Europe,"Ludwig-Maximilians-University (LMU) Munich Department Biology II Aquatic Ecology @@ -4932,7 +4931,7 @@ Mesocosm installation – view of the bags under water (Photo: Stibor) -","['http://mesocosm.org/wp-content/uploads/2017/05/Seeon_1_400px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Seeon_2_400px.jpg']",,,,"['47.9745129', '12.46009749999996']","{'coordinates': ['47.9745129', '12.46009749999996']}" +","['http://mesocosm.org/wp-content/uploads/2017/05/Seeon_1_400px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Seeon_2_400px.jpg']",,,,"['47.9745129', '12.46009749999996']","{'coordinates': ['47.9745129', '12.46009749999996']}" https://mesocosm.org/mesocosm/mesodrome/,University of Antwerp MESODROME,University of Antwerp,Belgium,Europe,"University of Antwerp, Dep. Biology Universiteitsplein 1 2610 Wilrijk @@ -4973,7 +4972,7 @@ Credit: Eric Struyf -",['http://mesocosm.org/wp-content/uploads/2018/05/Mesodrome_tech-drawing-300x115.jpg'],,,,"['51.155424', ' 4.409210']","{'coordinates': ['51.155424', '4.409210']}" +",['http://mesocosm.org/wp-content/uploads/2018/05/Mesodrome_tech-drawing-300x115.jpg'],,,,"['51.155424', ' 4.409210']","{'coordinates': ['51.155424', '4.409210']}" https://mesocosm.org/mesocosm/estacion-de-ciencias-marinas-de-toralla-ecimat/,Estación de Ciencias Mariñas de Toralla (ECIMAT),University of Vigo,Spain,Europe,"Illa de Toralla E-36331 Coruxo Vigo @@ -5026,7 +5025,7 @@ Photo credits: Jose Gonzalez Fernandez   -","['http://mesocosm.org/wp-content/uploads/2018/04/5B25D5A7-B59A-480E-93EF-F72F6D49B420-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/FCDD4CA6-6509-4CFE-BE24-51C6D14BCC65-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/897C6409-336F-4357-9831-3D0F71827349-1024x768.jpg']",,,,"['42.201979', ' -8.798505']","{'coordinates': ['42.201979', '-8.798505']}" +","['http://mesocosm.org/wp-content/uploads/2018/04/5B25D5A7-B59A-480E-93EF-F72F6D49B420-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/FCDD4CA6-6509-4CFE-BE24-51C6D14BCC65-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/897C6409-336F-4357-9831-3D0F71827349-1024x768.jpg']",,,,"['42.201979', ' -8.798505']","{'coordinates': ['42.201979', '-8.798505']}" https://mesocosm.org/mesocosm/smart-ecolake/,Smart Ecolake,"Nanjing Institute of Geography and Limnology, Chinese Academy of Sciences (NIGLAS)",China,Asia,"73 East Beijing Road, Nanjing 210008, P.R.China @@ -5067,7 +5066,7 @@ automation for e.g. nutrient and water supplementation ",,"www.ecolake.net ","EcoSmart mesocosm facility  whole view, photo credits: Jianming Deng Mesocosm close up, photo credit: Jianming Deng -","['http://mesocosm.org/wp-content/uploads/2023/12/Whole-View_1.9MB-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/single-tank-1024x683.jpg']",,,,"['31.03', '120.42']","{'coordinates': ['31.03', '120.42']}" +","['http://mesocosm.org/wp-content/uploads/2023/12/Whole-View_1.9MB-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/single-tank-1024x683.jpg']",,,,"['31.03', '120.42']","{'coordinates': ['31.03', '120.42']}" https://mesocosm.org/mesocosm/imdea-water-institute/,IMDEA Water Institute,IMDEA Water Foundation,Spain,Europe,"IMDEA Water Institute Avenida Punto Com 2 PO Box 28805, Alcala de Henares @@ -5119,7 +5118,7 @@ Photo: Andreu Rico   -","['http://mesocosm.org/wp-content/uploads/2018/04/IMG_2170-300x181.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/20160519_121359-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/20170512_154035_resized-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/IMG-20170512-WA0010-300x169.jpg']",,,,"['40.5133474', ' -3.3386556000000382']","{'coordinates': ['40.5133474', '-3.3386556000000382']}" +","['http://mesocosm.org/wp-content/uploads/2018/04/IMG_2170-300x181.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/20160519_121359-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/20170512_154035_resized-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/IMG-20170512-WA0010-300x169.jpg']",,,,"['40.5133474', ' -3.3386556000000382']","{'coordinates': ['40.5133474', '-3.3386556000000382']}" https://mesocosm.org/mesocosm/experimental-streams-facility-esf/,Experimental Streams Facility (ESF),ICRA (Catalan Institute for Water Research),Spain,Europe,"ICRA Catalan Institute for Water Research Carrer Emili Grahit 101 17003 Girona @@ -5186,7 +5185,7 @@ Photo credit: Vicenç Acuña   -","['http://mesocosm.org/wp-content/uploads/2018/05/image003.jpg@01D3EBA2.451771B0.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/image002.jpg@01D3EBA2.451771B0.jpg']",,,,"['41.967303', ' 2.840650']","{'coordinates': ['41.967303', '2.840650']}" +","['http://mesocosm.org/wp-content/uploads/2018/05/image003.jpg@01D3EBA2.451771B0.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/image002.jpg@01D3EBA2.451771B0.jpg']",,,,"['41.967303', ' 2.840650']","{'coordinates': ['41.967303', '2.840650']}" https://mesocosm.org/mesocosm/aquatron-laboratory/,Aquatron Laboratory,Dalhousie University Life Sciences Centre,Canada,North-America,"Dalhousie University Life Sciences Centre 1355 Oxford Street PO BOX 15000 @@ -5259,8 +5258,8 @@ Aquatron Laboratory: Phytoplankton cultivation -","['http://mesocosm.org/wp-content/uploads/2017/05/aquatronS.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Aquatron-empty_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/halifax_pool_calltoaction.image_.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/featureslide.image_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron1_400.jpg']",,,,"['44.6356125', '-63.5944334']","{'coordinates': ['44.6356125', '-63.5944334']}" -,[TEST CASE] Aquatron Laboratory,Dalhousie University Life Sciences Centre,,North-America,"Dalhousie University Life Sciences Centre +","['http://mesocosm.org/wp-content/uploads/2017/05/aquatronS.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Aquatron-empty_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/halifax_pool_calltoaction.image_.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/featureslide.image_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron1_400.jpg']",,,,"['44.6356125', '-63.5944334']","{'coordinates': ['44.6356125', '-63.5944334']}" +test 1,[TEST CASE] Aquatron Laboratory,Dalhousie University Life Sciences Centre,,North-America,"Dalhousie University Life Sciences Centre 1355 Oxford Street PO BOX 15000 Halifax, Nova Scotia @@ -5314,8 +5313,8 @@ Aquatron Laboratory: Phytoplankton cultivation -","['http://mesocosm.org/wp-content/uploads/2017/05/aquatronS.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Aquatron-empty_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/halifax_pool_calltoaction.image_.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/featureslide.image_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron1_400.jpg']",,,,"['44.6356125', '-63.5944334']","{'coordinates': ['44.6356125', '-63.5944334']}" -https://mesocosm.org/mesocosm/imdea-water-institute/,[TEST CASE] IMDEA Water Institute,IMDEA Water Foundation,Spain,Europe,"IMDEA Water Institute +","['http://mesocosm.org/wp-content/uploads/2017/05/aquatronS.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Aquatron-empty_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/halifax_pool_calltoaction.image_.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/featureslide.image_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron1_400.jpg']",,,,"['44.6356125', '-63.5944334']","{'coordinates': ['44.6356125', '-63.5944334']}" +test 2,[TEST CASE] IMDEA Water Institute,IMDEA Water Foundation,Spain,Europe,"IMDEA Water Institute Avenida Punto Com 2 PO Box 28805, Alcala de Henares Madrid (Spain) @@ -5358,4 +5357,144 @@ Photo: Andreu Rico   -","['http://mesocosm.org/wp-content/uploads/2018/04/IMG_2170-300x181.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/20160519_121359-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/20170512_154035_resized-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/IMG-20170512-WA0010-300x169.jpg']",,,,"['40.5133474', ' -3.3386556000000382']","{'coordinates': ['40.5133474', '-3.3386556000000382']}" \ No newline at end of file +","['http://mesocosm.org/wp-content/uploads/2018/04/IMG_2170-300x181.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/20160519_121359-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/20170512_154035_resized-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/IMG-20170512-WA0010-300x169.jpg']",,,,"['40.5133474', ' -3.3386556000000382']","{'coordinates': ['40.5133474', '-3.3386556000000382']}" +test 3,[TEST CASE] Keywords: no keywords information at all,"CMU Biological Station, Central Michigan University",USA,North America,"P.O. Box 206, +Beaver Island, +MI 49782 +USA +","Don Uzarski +Please login or request access to view contact information. +",2012 - present," +12 fibreglass tanks each 250 gallons +including metal halide +timer-controlled lights +housed on Lake Michigan with access to epilimnetic and metalimnetic water + +"," +Light +Temperature + +",," + + + + + 45.7422222,-85.50944444444444 + +",,,"YSI multiprobes +","on site +","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx +","photo credits: CMU Communications +",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}" +test 4,"[TEST CASE] Keywords: only ""Specialist areas"" column information","CMU Biological Station, Central Michigan University",USA,North America,"P.O. Box 206, +Beaver Island, +MI 49782 +USA +","Don Uzarski +Please login or request access to view contact information. +",2012 - present," +12 fibreglass tanks each 250 gallons +including metal halide +timer-controlled lights +housed on Lake Michigan with access to epilimnetic and metalimnetic water + +"," +Light +Temperature + +",," + + + + + 45.7422222,-85.50944444444444 + +",,"Ecology, Global warming","YSI multiprobes +","on site +","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx +","photo credits: CMU Communications +",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}" +test 5,"[TEST CASE] Keywords: only ""Primary interests"" information","CMU Biological Station, Central Michigan University",USA,North America,"P.O. Box 206, +Beaver Island, +MI 49782 +USA +","Don Uzarski +Please login or request access to view contact information. +",2012 - present," +12 fibreglass tanks each 250 gallons +including metal halide +timer-controlled lights +housed on Lake Michigan with access to epilimnetic and metalimnetic water + +"," +Light +Temperature + +",," + + + + + 45.7422222,-85.50944444444444 + +","Ecology, Global warming",,"YSI multiprobes +","on site +","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx +","photo credits: CMU Communications +",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}" +test 6,"[TEST CASE] Keywords: only ""Research Topics"" information","CMU Biological Station, Central Michigan University",USA,North America,"P.O. Box 206, +Beaver Island, +MI 49782 +USA +","Don Uzarski +Please login or request access to view contact information. +",2012 - present," +12 fibreglass tanks each 250 gallons +including metal halide +timer-controlled lights +housed on Lake Michigan with access to epilimnetic and metalimnetic water + +"," +Light +Temperature + +","Ecology, Global warming"," + + + + + 45.7422222,-85.50944444444444 + +",,,"YSI multiprobes +","on site +","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx +","photo credits: CMU Communications +",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}" +test 7,[TEST CASE] Keywords: all information available,"CMU Biological Station, Central Michigan University",USA,North America,"P.O. Box 206, +Beaver Island, +MI 49782 +USA +","Don Uzarski +Please login or request access to view contact information. +",2012 - present," +12 fibreglass tanks each 250 gallons +including metal halide +timer-controlled lights +housed on Lake Michigan with access to epilimnetic and metalimnetic water + +"," +Light +Temperature + +","Ecology, Global warming"," + + + + + 45.7422222,-85.50944444444444 + +","Ecology, Global warming","Ecology, Global warming","YSI multiprobes +","on site +","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx +","photo credits: CMU Communications +",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}" \ No newline at end of file From 7f0382c06efb0cf0dcda2fb36c62009db8fdfad3 Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 13 Oct 2025 13:59:44 +0200 Subject: [PATCH 060/149] feat: creation if ids using url and location fields --- .../workers/common/common/aquanavi/mapping.py | 31 +- .../common/aquanavi/mesocosm_data_cleaned.csv | 241 +----- .../mesocosm_data_cleaned_with_test_cases.csv | 767 ++++++++++++++++++ 3 files changed, 797 insertions(+), 242 deletions(-) create mode 100644 server/workers/common/common/aquanavi/mesocosm_data_cleaned_with_test_cases.csv diff --git a/server/workers/common/common/aquanavi/mapping.py b/server/workers/common/common/aquanavi/mapping.py index 7dc87a5b8..409a6cc30 100644 --- a/server/workers/common/common/aquanavi/mapping.py +++ b/server/workers/common/common/aquanavi/mapping.py @@ -1,17 +1,21 @@ import re import sys +import hashlib import pandas as pd from pathlib import Path CSV_PATH = "common/common/aquanavi/mesocosm_data_cleaned.csv" +CSV_PATH_WITH_TEST_DATA = "common/common/aquanavi/mesocosm_data_cleaned_with_test_cases.csv" DEFAULT_DOCUMENT_TYPE = "physical object" DEFAULT_RESULT_TYPE = ['Other/Unknown material'] REQUIRED_COLUMNS = [ "Name", "Country", "Equipment", + "Research Topics", "Specialist areas", + "Primary interests", "Controlled Parameters", "Description of Facility", "Facility location(s) split", @@ -175,6 +179,28 @@ def get_keywords(row): return "; ".join(keywords_parts) +def get_id(row): + """ + Creates a unique identifier based on URL and location. + + Args: + row (pandas.Series): String DataFrame. + + Returns: + str: Identifier for a specific record. The identifier consists of: url + location in hashed form. + """ + URL_COLUMN_NAME = "url" + LOCATION_COLUMN_NAME = "Facility location(s) split" + + url = str(row[URL_COLUMN_NAME]).strip() if row[URL_COLUMN_NAME] else "" + location = str(row[LOCATION_COLUMN_NAME]).strip() if row[LOCATION_COLUMN_NAME] else "" + combined_url_and_location = url + location + + hasher = hashlib.sha256() + hasher.update(combined_url_and_location.encode('utf-8')) + hashed_identifier = hasher.hexdigest() + return hashed_identifier + def check_that_csv_file_exists(csv_path): if not csv_path.exists(): sys.exit(f"CSV does not exists: {csv_path}.") @@ -195,14 +221,15 @@ def map_sample_data(): result = [] for _, row in df.iterrows(): + id = get_id(row) title = str(row["Name"]).strip() if row["Name"] else "" url = str(row["url"]).strip() if row["url"] else "" image = row["Photos of experiments/installations images"] if row["Photos of experiments/installations images"] else "" result.append({ - "id": url, + "id": id, "title": title, - "identifier": url, + "identifier": id, "link": url, "type": DEFAULT_DOCUMENT_TYPE, "resulttype": DEFAULT_RESULT_TYPE, diff --git a/server/workers/common/common/aquanavi/mesocosm_data_cleaned.csv b/server/workers/common/common/aquanavi/mesocosm_data_cleaned.csv index 354bf571c..76f09471f 100644 --- a/server/workers/common/common/aquanavi/mesocosm_data_cleaned.csv +++ b/server/workers/common/common/aquanavi/mesocosm_data_cleaned.csv @@ -5258,243 +5258,4 @@ Aquatron Laboratory: Phytoplankton cultivation -","['http://mesocosm.org/wp-content/uploads/2017/05/aquatronS.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Aquatron-empty_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/halifax_pool_calltoaction.image_.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/featureslide.image_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron1_400.jpg']",,,,"['44.6356125', '-63.5944334']","{'coordinates': ['44.6356125', '-63.5944334']}" -test 1,[TEST CASE] Aquatron Laboratory,Dalhousie University Life Sciences Centre,,North-America,"Dalhousie University Life Sciences Centre - 1355 Oxford Street - PO BOX 15000 - Halifax, Nova Scotia - Canada, B3H 4R2 -","John Batt -Please login or request access to view contact information. -",,,"temperature, stratification, light, etc. -","Animal behaviour, ballast water, flood containment, invasive species -"," - - - - - 44.6356125,-63.5944334 - -",,,"These world-class facilities are backed by our mechanical system, which can provide high quality, temperature controlled seawater and freshwater year round, as well as a professional team of both biologists and mechanical operators who are available to run the systems and help researchers. 16 wet labs. -",,"http://www.dal.ca/dept/aquatron.html -http://www.dal.ca/dept/aquatron/facilities/tower_tank.html -http://www.dal.ca/dept/aquatron/facilities/pool_tank.html -"," - - - - -Aquatron Laboratory in Halifax, Nova-Scotia, CA - - - - - - - - - - - -Aquatron laboratory: Pool tank - - - - - -Aquatron Laboratory: Tower tank sysem - - - - - -Aquatron Laboratory: Phytoplankton cultivation - - - - -","['http://mesocosm.org/wp-content/uploads/2017/05/aquatronS.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Aquatron-empty_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/halifax_pool_calltoaction.image_.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/featureslide.image_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron1_400.jpg']",,,,"['44.6356125', '-63.5944334']","{'coordinates': ['44.6356125', '-63.5944334']}" -test 2,[TEST CASE] IMDEA Water Institute,IMDEA Water Foundation,Spain,Europe,"IMDEA Water Institute -Avenida Punto Com 2 -PO Box 28805, Alcala de Henares -Madrid (Spain) -","Andreu Rico:  andreu.rico@imdea.org -Marco Vighi:  marco.vighi@imdea.org -",,,,"Environmental fate of chemicals and calculation of degradation rates -Assessment of the adverse effects of chemicals on several biological endpoints and derivation of safe environmental concentrations -Evaluation of the interaction between multiple stressors (chemical and non-chemical) on aquatic ecosystems -"," - - - - - 40.5133474, -3.3386556000000382 - -","We are mainly engaged on academic research projects but also open for collaboration with the regulatory and industry sectors. Please do not hesitate to contact us. -",,,"Can be arranged upon request -","http://water.imdea.org/ -","  - - - - -Photot: Michelle Jansen -  - - -Photo: Andreu Rico -  - - - - -Photo: Andreu Rico - - -Photo: Andreu Rico - - - - -  -","['http://mesocosm.org/wp-content/uploads/2018/04/IMG_2170-300x181.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/20160519_121359-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/20170512_154035_resized-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/IMG-20170512-WA0010-300x169.jpg']",,,,"['40.5133474', ' -3.3386556000000382']","{'coordinates': ['40.5133474', '-3.3386556000000382']}" -test 3,[TEST CASE] Keywords: no keywords information at all,"CMU Biological Station, Central Michigan University",USA,North America,"P.O. Box 206, -Beaver Island, -MI 49782 -USA -","Don Uzarski -Please login or request access to view contact information. -",2012 - present," -12 fibreglass tanks each 250 gallons -including metal halide -timer-controlled lights -housed on Lake Michigan with access to epilimnetic and metalimnetic water - -"," -Light -Temperature - -",," - - - - - 45.7422222,-85.50944444444444 - -",,,"YSI multiprobes -","on site -","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx -","photo credits: CMU Communications -",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}" -test 4,"[TEST CASE] Keywords: only ""Specialist areas"" column information","CMU Biological Station, Central Michigan University",USA,North America,"P.O. Box 206, -Beaver Island, -MI 49782 -USA -","Don Uzarski -Please login or request access to view contact information. -",2012 - present," -12 fibreglass tanks each 250 gallons -including metal halide -timer-controlled lights -housed on Lake Michigan with access to epilimnetic and metalimnetic water - -"," -Light -Temperature - -",," - - - - - 45.7422222,-85.50944444444444 - -",,"Ecology, Global warming","YSI multiprobes -","on site -","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx -","photo credits: CMU Communications -",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}" -test 5,"[TEST CASE] Keywords: only ""Primary interests"" information","CMU Biological Station, Central Michigan University",USA,North America,"P.O. Box 206, -Beaver Island, -MI 49782 -USA -","Don Uzarski -Please login or request access to view contact information. -",2012 - present," -12 fibreglass tanks each 250 gallons -including metal halide -timer-controlled lights -housed on Lake Michigan with access to epilimnetic and metalimnetic water - -"," -Light -Temperature - -",," - - - - - 45.7422222,-85.50944444444444 - -","Ecology, Global warming",,"YSI multiprobes -","on site -","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx -","photo credits: CMU Communications -",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}" -test 6,"[TEST CASE] Keywords: only ""Research Topics"" information","CMU Biological Station, Central Michigan University",USA,North America,"P.O. Box 206, -Beaver Island, -MI 49782 -USA -","Don Uzarski -Please login or request access to view contact information. -",2012 - present," -12 fibreglass tanks each 250 gallons -including metal halide -timer-controlled lights -housed on Lake Michigan with access to epilimnetic and metalimnetic water - -"," -Light -Temperature - -","Ecology, Global warming"," - - - - - 45.7422222,-85.50944444444444 - -",,,"YSI multiprobes -","on site -","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx -","photo credits: CMU Communications -",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}" -test 7,[TEST CASE] Keywords: all information available,"CMU Biological Station, Central Michigan University",USA,North America,"P.O. Box 206, -Beaver Island, -MI 49782 -USA -","Don Uzarski -Please login or request access to view contact information. -",2012 - present," -12 fibreglass tanks each 250 gallons -including metal halide -timer-controlled lights -housed on Lake Michigan with access to epilimnetic and metalimnetic water - -"," -Light -Temperature - -","Ecology, Global warming"," - - - - - 45.7422222,-85.50944444444444 - -","Ecology, Global warming","Ecology, Global warming","YSI multiprobes -","on site -","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx -","photo credits: CMU Communications -",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}" \ No newline at end of file +","['http://mesocosm.org/wp-content/uploads/2017/05/aquatronS.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Aquatron-empty_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/halifax_pool_calltoaction.image_.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/featureslide.image_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron1_400.jpg']",,,,"['44.6356125', '-63.5944334']","{'coordinates': ['44.6356125', '-63.5944334']}" \ No newline at end of file diff --git a/server/workers/common/common/aquanavi/mesocosm_data_cleaned_with_test_cases.csv b/server/workers/common/common/aquanavi/mesocosm_data_cleaned_with_test_cases.csv new file mode 100644 index 000000000..419c0ddb3 --- /dev/null +++ b/server/workers/common/common/aquanavi/mesocosm_data_cleaned_with_test_cases.csv @@ -0,0 +1,767 @@ +url,Name,Legal name of organisation,Country,Continent,Organisation address,Primary contact information (PI),Years of Mesocosm Experiments,Description of Facility,Controlled Parameters,Research Topics,Facility location(s),Primary interests,Specialist areas,Equipment,Lodging,Source of Information,Photos of experiments/installations,Photos of experiments/installations images,Equipment images,Lodging images,Manipulations,Facility location(s) split,location_facilities +https://mesocosm.org/mesocosm/sites-aquanet-skogaryd-research-station/,SITES AquaNet – Skogaryd Research Station,SITES and Göteborg University,Sweden,Europe,"Göteborg University +Inst. for Geosciences +Guldhedsgatan 5a +40530 Göteborg +Sweden +  +","Leif Klemedtsson +Please login or request access to view contact information. +",2017," +Open access to national and international researchers. +Outdoor, freshwater, deployed in an adaptable jetfloat, placed in the lake Erssjön within Skogaryd research Catchment. +PE-film enclosures or 20 hardshell PE enclosures (ø = 0.9 m, depth = 1.5 m, volume = 700 l) + +",,"Advanced general understanding in ecology by using modularized experiments across SITES-AquaNet stations (Sweden) or potential collaborators (Sweden, Europe and other continents). Topics: biodiversity-functioning-stability relationships, community ecology, ecological stoichiometry, food web interactions, benthic-pelagic dynamics, biochemistry (carbon cycling), cyanobacterial blooms and global change research. Possibility to combine mechanistic experiments with lake monitoring data from Lake Erssjön (e.g., phytoplankton, zooplankton, nutrients and on-site climate data, incl. temperature profile measurements). +"," + + + + + 58.3712, 12.1613 + +",,,"Apogee SQ-500 (PAR), CTG Trilux fluorometer (chlorophyll-a, phycocyanin and turbidity) and Aanderaa 4531 optode (O2 and temperature) sensors fulltime deployed in each enclosure, deployed with a Campbell CR1000 datalogger and an AM16/32B multiplexer (https://www.campbellsci.com). The sensor and logger are connected to Skogaryd fiber-optic network for maintenance and data retrieval. Surveillance camera mounted for remote monitoring of the site. +Hach with DO and pH, an AP-2000 AquaRead Multiprobe (http://www.aquaread.com/portofolio/ap-2000/) equipped with a chlorophyll a sensor, and an Apogee MQ-500 (PAR) sensor with handheld meters. +Laboratory container for filtering and extraction of samples, cold storage and freezers are available at the research station. Connection to laboratories for analysis at the Swedish University of Agricultural Sc.; the Geochemical laboratory (http://www.slu.se/en/departments/aquatic-sciences-assessment/laboratories/geochemical-laboratory/), and at the Uppsala University; the Erken Laboratory (http://www.ieg.uu.se/erken-laboratory). +","Lodging capability in two houses for 8 persons with a smaller conference room in the station area (see skogarydwebmap.gu.se). A conference hostel located nearby can take 25 persons +","SITES (AquaNet, Water and Spectral projects) (http://www.fieldsites.se) +"," + + + +Photo credit: Leif Klemedtsson + + + + +Photo credit: Leif Klemedtsson + + + + +  +","['http://mesocosm.org/wp-content/uploads/2018/05/Skogaryd_2-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Skogaryd_1-1024x683.jpg']",,,,"['58.3712', ' 12.1613']","{'coordinates': ['58.3712', '12.1613']}" +https://mesocosm.org/mesocosm/university-koblenz-landau/,Landau Stream Mesocosm Facility (LSMF),University Koblenz-Landau,Germany,Europe,"University Koblenz-Landau + Fortstraße 7 + 76829 Landau +","Ralf Schulz + Matthias Wieczorek +Please login or request access to view contact information. +",2008 - present,"The stream mesocosm facility at the Landau Campus (SW Germany) consists of 16 independent high-density concrete stream channels (each channel: 45 m length, 0.5 m depth; 0.4 m width). The channels can be run in a flow-through or recirculating mode with discharges up to about 3 L/s representing flow conditions and hydraulic residence times as typically represented by scenarios used e.g. for the regulatory assessment of chemicals in Europe. +","Discharge (L/s) +Flow (flow-through or/and recirculating) +Taxon and coverage of aquatic macrophytes +Sediment composition +Shading +Exposure scenario (peak-, hour- and day-scale) +","Environmental fate of pollutants (e.g. sorption transient storage and longitudinal dispersion) +Assessment of adverse effects of pollutants on macroinvertebrates following pulse exposures +Evaluation and establishment of aquatic-terrestrial model ecosystems to assess aquatic insect emergence-related pollutant transfer or effect translation from aquatic to adjacent terrestrial systems +"," + + + + + 49.20269,8.106179999999995 + +",,,"Sediment of various compositions +Aquatic macrophytes (e.g. Elodea nuttallii, E. canadensis, Myriophyllum spicatum) +","Possible upon negotiation +","References: + Elsaesser, D., Stang, C., Bakanov, N., Schulz, R., 2013. The Landau Stream Mesocosm Facility: pesticide mitigation in vegetated flow-through streams. Bull. Environ. Contam. Toxicol. 90, 640–5. doi:10.1007/s00128-013-0968-9 + Stang, C., Elsaesser, D., Bundschuh, M., Ternes, T. a., Schulz, R., 2013. Mitigation of Biocide and Fungicide Concentrations in Flow-Through Vegetated Stream Mesocosms. J. Environ. Qual. 42, 1889. doi:10.2134/jeq2013.05.0186 + Stang, C., Wieczorek, M.V., Noss, C., Lorke, A., Scherr, F., Goerlitz, G., Schulz, R., 2014. Role of submerged vegetation in the retention processes of three plant protection products in flow-through stream mesocosms. Chemosphere 107, 13–22. doi:10.1016/j.chemosphere.2014.02.055 + Wieczorek, M. V., Kötter, D., Gergs, R., Schulz, R., 2015. Using stable isotope analysis in stream mesocosms to study potential effects of environmental chemicals on aquatic-terrestrial subsidies. Environ. Sci. Pollut. Res. 22, 12892–12901. doi:10.1007/s11356-015-4071-0 + Wieczorek, M. V., Bakanov, N., Stang, C., Bilancia, D., Lagadic, L., Bruns, E., Schulz, R., 2016. Reference scenarios for exposure to plant protection products and invertebrate communities in stream mesocosms. Sci. Total Environ. 545-546, 308-319. doi: 10.1016/j.scitotenv.2015.12.048 +"," + + + + +Stream mesocosm facility at the Landau Campus + + + + + +Stream mesocosm facility at the Landau Campus + + + + +","['http://mesocosm.org/wp-content/uploads/2017/05/Stream-Mesocosms-Landau_400px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Fliessrinnenanlage_400.jpg']",,,,"['49.20269', '8.106179999999995']","{'coordinates': ['49.20269', '8.106179999999995']}" +https://mesocosm.org/mesocosm/sites-aquanet-erken-laboratory/,SITES AquaNet-Erken Laboratory,Uppsala University,Sweden,Europe,"Uppsala University: +P.O. Box 256 +SE-751 05 Uppsala +Sweden +  +Erken Laboratory: +Norra Malmavägen +761 73 Norrtälje +Sweden +","Silke Langenheder: +Please login or request access to view contact information. +",2017 - present," +Open access to national and international researchers. +Outdoor, freshwater, lake deployed in an adaptable jetfloat. +PE-film enclosures or 20 hard-shell PE enclosures (ø = 0.9m, depth = 1.5m, volume = 700L). +In addition, there is access to another set of 20 hard-shell PE enclosures (ø = 1m, depth = 2 m, volume = 1200L). + +",,"Advance general understanding in ecology by using modularized experiments across SITES-AquaNet stations (Sweden) or potential collaborators (Sweden, Europe and other continents). Topics: biodiversity-functioning-stability relationships, community ecology, ecological stoichiometry, food web interactions, benthic-pelagic dynamics, biochemistry (carbon cycling), cyanobacterial blooms and global change research. Possibility to combine mechanistic experiments with historical (decadal) lake monitoring data from Lake Erken (e.g., phytoplankton, zooplankton, fish, nutrients and high frequency temperature measurements). +"," + + + + + 59.8354205, 18.6327766 + +",,,"Apogee SQ-500 (PAR), CTG Trilux fluorometer (chlorophyll-a, phycocyanin and turbidity) and Aanderaa 4531 optode (O2 and temperature) sensors fulltime deployed in each enclosure. CR1000 dataloggers and AM16/32B multiplexers. Possibility to develop Internet interface for collected data. One EXO2 Multiprobe (https://www.ysi.com/EXO2) one AP-2000 AquaRead Multiprobe (http://www.aquaread.com/portofolio/ap-2000/) and one Apogee MQ-500 (PAR) with handheld meters. Laboratory analytical services available in site (http://www.ieg.uu.se/erken-laboratory/analytical-services/) or at Uppsala University (http://www.ieg.uu.se/limnology/) +","Capacity in site (Erken Laboratory) up to 60 people with fridges, freezers and cooking facilities (http://www.ieg.uu.se/erken-laboratory/.) +","SITES AquaNet, Water and Spectral: http://www.fieldsites.se +NETLAKE: www.netlake.org +GLEON: www.gleon.org +"," + + + +Photo credit: Sophie Wertek + + + + +Photo credit: Erik Sahlee + + + + +","['http://mesocosm.org/wp-content/uploads/2018/05/Erken_2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Erken_1-1024x705.jpg']",,,,"['59.8354205', ' 18.6327766']","{'coordinates': ['59.8354205', '18.6327766']}" +https://mesocosm.org/mesocosm/resources-garden-of-aquatic-plant/,Resources garden of aquatic plant,"Wuhan Botanical Garden, Chinese Academy of Sciences",China,Asia,"Lumo Road #1, Wuhan, China +","(+86)13297957139 +Please login or request access to view contact information. +",2019-2022,"Total area of 450 m2, and with the concrete pools of 1 * 1 m2 and 2 * 2 m2 at 1 m and 1.5 m depths.  Electricity is powered, and two types of water supply (from nearby Donghu Lake or tap water) +","Water depth at the gradient of 25 cm to 150 cm, and the temperature could be also controlled by the heat devices and control panel. +","functional trait; global warming +"," + + + + + 30.54694,114.41972 + +","1. the effects of warming or extreme water level changes on submerged macrophytes +2. the trade-offs between functional traits of submerged macrophytes +3. the interaction between submerged macrophytes and phytoplankton, zooplankton and fish +","Aquatic plant +","YSI multi-parameter probe, PAM monitor, Li-1400 +","Wuhan +","http://english.wbg.cas.cn/ +"," + + + +The green house and the heating control system + + + + +Outdoor tanks with different size and area + + + + +Tanks with different macrophytes and water depth + + + + +","['http://mesocosm.org/wp-content/uploads/2019/03/The-green-house-and-the-heating-control-system-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Outdoor-tanks-with-different-size-and-area-300x225.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Tanks-with-different-macrophytes-and-water-depth-300x225.jpeg']",,,,"['30.54694', '114.41972']","{'coordinates': ['30.54694', '114.41972']}" +https://mesocosm.org/mesocosm/large-experimental-array-of-ponds-leap/,Large Experimental Array of Ponds (LEAP),McGill University,Canada,North America,"McGill Department of Biology +Stewart Biology Bldg +1205 Dr Penfield Ave +Montreal, QC H3A 1B1 +Canada +","Professor Andrew Gonzalez +Please login or request access to view contact information. +",2016 - present,"LEAP is based at McGill University’s Gault Reserve It is a facility designed for well-replicated experiments addressing the evolution and ecology of aquatic ecosystems exposed to environmental stressors. It is an array of 96 mesocosm tanks, each containing ~1000 liters of water.  Water and organisms (excluding fish) are piped to LEAP directly from a Lake Hertel over a kilometer away. Lake Hertel is a protected lake not exposed to contaminants. The plumbing at LEAP allows for a semi-continuous flow of lake water and organisms into and out of the tanks throughout the season. These communities are natural analogues of the freshwater ponds and lakes so common in Canadian landscapes. The onsite lab allows us to rapidly process samples (see images below). An outflow reservoir can hold the outflow from all mesocosms so that decontamination can be done, if needed. +","Contaminants such as pH and herbicide concentrations. +"," +Freshwater ecology and evolution +Limnology +Ecosystem processes + +"," + + + + + 45.5368, -73.1578 + +","Experimental research addressing how complex aquatic communities respond to environmental stressors.  +"," +Experimental evolution +Ecology +Metagenomics  + +"," +Fluoroprobe +Microscopes +Drone + +","Available +https://gault.mcgill.ca/en/meeting-and-lodging/detail/lodging-at-the-reserve/ +","http://gonzalezlab.weebly.com/leap.html +"," + + + +Panoramic view of the LEAP facility embedded in forest of the Gault reserve, with the inflow and outflow reservoirs visible. +Photo credit: Andrew Gonzalez + + + + +Panoramic view of the LEAP-lab, in and outflow reservoir and mesocosm platform +Photo credit: Andrew Gonzalez + + + + +Depth and multiparameter probe (YSI) physico-chemical measurements.  Photo credit: Vincent Fugère +  + + + + +","['http://mesocosm.org/wp-content/uploads/2019/04/3-1024x769.png', 'http://mesocosm.org/wp-content/uploads/2019/04/2-1024x368.png', 'http://mesocosm.org/wp-content/uploads/2019/04/1.png']",,,,"['45.5368', ' -73.1578']","{'coordinates': ['45.5368', '-73.1578']}" +https://mesocosm.org/mesocosm/cmu-biological-station-mesocosm-facility/,[TEST CASE] Identifier: same with some other mesocosm; Location: different from some other mesocosm,"Eawag, Swiss Federal Institute of Aquatic Science and Technology",Switzerland,Europe,"Eawag, Überlandstrasse 133, 8600 Dübendorf, Switzerland +","Christoph Vorburger +Head of Experimental Ponds Committee +Please login or request access to view contact information. +",2016 – present,"The Experimental Ponds Facility at Eawag in Dübendorf consists of 36 independent ponds made of glass fiber reinforced plastic. The ponds are 1.5 m deep with a shallow end to one side (0.5 m), and they hold up to 15 m3 of fresh water. The ponds can be drained and reset completely between experiments. +","Depending on ongoing experiments: +1. Nutrient loading (phosphorus) +2. Presence/absence of macrophytes +3. Presence/absence of filter feeders (mussels) +4. Ecotypes of added fish +","Ecosystem resilience +Eco-evolutionary dynamics +Ecosystem effects of environmental stressors +Ecoosystem effects of evaporation control +"," + + + + + 47.40515,8.60855 + +",,,"Indoor laboratories for sample processing +Sampling bridges for easy access to water column +Sampling equipment for phyto- and zooplankton +Exo2 Multiparameter Sonds for automated measurement of water quality parameters +","Hotels and Eawag guest house nearby +","https://www.eawag.ch/de/ueberuns/arbeiten-an-der-eawag/forschungsumfeld/versuchsteichanlage/ +"," + + + +Image 1: Eawag’s Experimental Pond Facility in Dübendorf, Switzerland. Picture taken in summer 2016, shortly after the construction of the facility. Photo credit: Christoph Vorburger + + + + +Image 2: Schematic cross-section of an experimental pond. Image credit: Eawag + + + + +Image 3: Scientists taking samples at Eawag’s Experimental Pond Facility in Dübendorf, Switzerland. Photo credit: Eawag + + + + +","['http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-1-300x186.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-2-300x156.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-3-300x174.jpg']",,,,"['47.40515', '8.60855']","{'coordinates': ['47.40515', '8.60855']}" +https://mesocosm.org/mesocosm/cmu-biological-station-mesocosm-facility/,[TEST CASE] Identifier: same with some other mesocosm; Location: same with some other mesocosm,"CMU Biological Station, Central Michigan University",USA,North America,"P.O. Box 206, +Beaver Island, +MI 49782 +USA +","Don Uzarski +Please login or request access to view contact information. +",2012 - present," +12 fibreglass tanks each 250 gallons +including metal halide +timer-controlled lights +housed on Lake Michigan with access to epilimnetic and metalimnetic water + +"," +Light +Temperature + +"," +Predator-prey interactions +microplastic impacts +sediment contaminants +macrophyte-phytoplankton interactions +fish behavior +nutrient impacts + +"," + + + + + 45.7422222,-85.50944444444444 + +"," +Invasive species +eutrophication +climate change + +","Laurentian Great Lakes +","YSI multiprobes +","on site +","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx +","photo credits: CMU Communications +",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}" +test 1,[TEST CASE] Aquatron Laboratory,Dalhousie University Life Sciences Centre,,North-America,"Dalhousie University Life Sciences Centre + 1355 Oxford Street + PO BOX 15000 + Halifax, Nova Scotia + Canada, B3H 4R2 +","John Batt +Please login or request access to view contact information. +",,,"temperature, stratification, light, etc. +","Animal behaviour, ballast water, flood containment, invasive species +"," + + + + + 44.6356125,-63.5944334 + +",,,"These world-class facilities are backed by our mechanical system, which can provide high quality, temperature controlled seawater and freshwater year round, as well as a professional team of both biologists and mechanical operators who are available to run the systems and help researchers. 16 wet labs. +",,"http://www.dal.ca/dept/aquatron.html +http://www.dal.ca/dept/aquatron/facilities/tower_tank.html +http://www.dal.ca/dept/aquatron/facilities/pool_tank.html +"," + + + + +Aquatron Laboratory in Halifax, Nova-Scotia, CA + + + + + + + + + + + +Aquatron laboratory: Pool tank + + + + + +Aquatron Laboratory: Tower tank sysem + + + + + +Aquatron Laboratory: Phytoplankton cultivation + + + + +","['http://mesocosm.org/wp-content/uploads/2017/05/aquatronS.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Aquatron-empty_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/halifax_pool_calltoaction.image_.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/featureslide.image_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron1_400.jpg']",,,,"['44.6356125', '-63.5944334']","{'coordinates': ['44.6356125', '-63.5944334']}" +test 2,[TEST CASE] IMDEA Water Institute,IMDEA Water Foundation,Spain,Europe,"IMDEA Water Institute +Avenida Punto Com 2 +PO Box 28805, Alcala de Henares +Madrid (Spain) +","Andreu Rico:  andreu.rico@imdea.org +Marco Vighi:  marco.vighi@imdea.org +",,,,"Environmental fate of chemicals and calculation of degradation rates +Assessment of the adverse effects of chemicals on several biological endpoints and derivation of safe environmental concentrations +Evaluation of the interaction between multiple stressors (chemical and non-chemical) on aquatic ecosystems +"," + + + + + 40.5133474, -3.3386556000000382 + +","We are mainly engaged on academic research projects but also open for collaboration with the regulatory and industry sectors. Please do not hesitate to contact us. +",,,"Can be arranged upon request +","http://water.imdea.org/ +","  + + + + +Photot: Michelle Jansen +  + + +Photo: Andreu Rico +  + + + + +Photo: Andreu Rico + + +Photo: Andreu Rico + + + + +  +","['http://mesocosm.org/wp-content/uploads/2018/04/IMG_2170-300x181.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/20160519_121359-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/20170512_154035_resized-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/IMG-20170512-WA0010-300x169.jpg']",,,,"['40.5133474', ' -3.3386556000000382']","{'coordinates': ['40.5133474', '-3.3386556000000382']}" +test 3,[TEST CASE] Keywords: no keywords information at all,"CMU Biological Station, Central Michigan University",USA,North America,"P.O. Box 206, +Beaver Island, +MI 49782 +USA +","Don Uzarski +Please login or request access to view contact information. +",2015 - present," +12 fibreglass tanks each 250 gallons +including metal halide +timer-controlled lights +housed on Lake Michigan with access to epilimnetic and metalimnetic water + +"," +Light +Temperature + +",," + + + + + 45.7422222,-85.50944444444444 + +",,,"YSI multiprobes +","on site +","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx +","photo credits: CMU Communications +",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}" +test 4,"[TEST CASE] Keywords: only ""Specialist areas"" column information","CMU Biological Station, Central Michigan University",USA,North America,"P.O. Box 206, +Beaver Island, +MI 49782 +USA +","Don Uzarski +Please login or request access to view contact information. +",2016 - present," +12 fibreglass tanks each 250 gallons +including metal halide +timer-controlled lights +housed on Lake Michigan with access to epilimnetic and metalimnetic water + +"," +Light +Temperature + +",," + + + + + 45.7422222,-85.50944444444444 + +",,"Ecology, Global warming","YSI multiprobes +","on site +","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx +","photo credits: CMU Communications +",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}" +test 5,"[TEST CASE] Keywords: only ""Primary interests"" information","CMU Biological Station, Central Michigan University",USA,North America,"P.O. Box 206, +Beaver Island, +MI 49782 +USA +","Don Uzarski +Please login or request access to view contact information. +",2017 - present," +12 fibreglass tanks each 250 gallons +including metal halide +timer-controlled lights +housed on Lake Michigan with access to epilimnetic and metalimnetic water + +"," +Light +Temperature + +",," + + + + + 45.7422222,-85.50944444444444 + +","Ecology, Global warming",,"YSI multiprobes +","on site +","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx +","photo credits: CMU Communications +",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}" +test 6,"[TEST CASE] Keywords: only ""Research Topics"" information","CMU Biological Station, Central Michigan University",USA,North America,"P.O. Box 206, +Beaver Island, +MI 49782 +USA +","Don Uzarski +Please login or request access to view contact information. +",2018 - present," +12 fibreglass tanks each 250 gallons +including metal halide +timer-controlled lights +housed on Lake Michigan with access to epilimnetic and metalimnetic water + +"," +Light +Temperature + +","Ecology, Global warming"," + + + + + 45.7422222,-85.50944444444444 + +",,,"YSI multiprobes +","on site +","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx +","photo credits: CMU Communications +",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}" +test 7,[TEST CASE] Keywords: all information available,"CMU Biological Station, Central Michigan University",USA,North America,"P.O. Box 206, +Beaver Island, +MI 49782 +USA +","Don Uzarski +Please login or request access to view contact information. +",2019 - present," +12 fibreglass tanks each 250 gallons +including metal halide +timer-controlled lights +housed on Lake Michigan with access to epilimnetic and metalimnetic water + +"," +Light +Temperature + +","Ecology, Global warming"," + + + + + 45.7422222,-85.50944444444444 + +","Ecology, Global warming","Ecology, Global warming","YSI multiprobes +","on site +","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx +","photo credits: CMU Communications +",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}" +test 8,[TEST CASE] Non-latin characters (Chinese simplified),,China,Asia,____,____,2020 - present,___________,__,"______________ +_______"," + + + + + 45.7422222,-85.50944444444444 + +","______________ +_______","______________ +_______",____,"on site +","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx +","photo credits: CMU Communications +",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}" +test 9,[TEST CASE] Non-latin characters (Arabic),__ ____ ______,___,_______,__ ____ ______,__ ____ ______,2021 - present,_____ _____ _____ _________ __ Eawag __ Dübendorf __ 36 ____ ______ ______ __ _________ ______ ________ ________. ____ ___ _____ 1.5 ___ __ ___ ___ __ ____ ____ (0.5 ___)_ _______ __ ___ ___ 15 _____ ______ __ ______ ______. ____ _____ _____ ______ _____ _______ ___ _______.,____ _______,_______ ________ _______," + + + + + 45.7422222,-85.50944444444444 + +",__ ____ ______,__ ____ ______,__ ____ ______,"on site +","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx +","photo credits: CMU Communications +",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}" +"test 10 ",[TEST CASE] Non-latin characters (Greek),___ _�______ ________,Greece,Europe,___ _�______ ________,___ _�______ ________,2022 - present,"_ ___________ ____________ ______ ___ Eawag ___ Dübendorf _�_________ _�_ 36 ___________ ______ _______________ _�_ �_______ __________ __ ____ _______. __ ______ _____ _____ 1,5 m __ ___ ____ ____ ___ ___ �_____ (0,5 m) ___ ____________ ___ 15 m3 ______ _____. __ ______ _�_____ __ _�_____________ ___ __ _�_____________ �_____ ______ ___ �_________.",___,_________ _�__________," + + + + + 45.7422222,-85.50944444444444 + +",_________ _�__________,_________ _�__________,___ _�______ ________,"on site +","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx +","photo credits: CMU Communications +",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}" +test 11,[TEST CASE] Abstract: no information at all,University of Helsinki,Finland,Europe,"University of Helsinki + P.O. Box 3 + 00014 University of Helsinki + Finland +","Director: Marko Reinikainen + Research Coordinator: Joanna Norkko +Please login or request access to view contact information.,Please login or request access to view contact information. +",2023 - present,,,"Biodiversity, stoichiometry, benthic ecology, plankton ecology, seagrass ecology, ice studies, reproductive evolution in fishes +"," + + + + + 59.8431619,23.2440297 + +",,,,"Dormitories with ca 100 beds, full board, self-service kitchens, sea-side sauna +","http://www.finmari-infrastructure.fi/field-stations/tvarminne-uhel/ +"," + + + +Pristine nature reserve for experimental set-ups + + + + +SYKE-MRC field mesocosm work at Tvärminne + + + + +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}" +test 12,[TEST CASE] Abstract: all information available,University of Helsinki,Finland,Europe,"University of Helsinki + P.O. Box 3 + 00014 University of Helsinki + Finland +","Director: Marko Reinikainen + Research Coordinator: Joanna Norkko +Please login or request access to view contact information.,Please login or request access to view contact information. +",2024 - present,"pelagic – marine – outdoor + A large nature reserve surrounding TZS is dedicated to research, providing access to a pristine environment for field mesocosms. Research vessels and technical services support sampling and maintenance; a hovercraft allows winter-studies. Aquarium facilities with natural or artificial light are available for flow-through experiments at up to 100 000 m3 daily water capacity. A marine laboratory provides analytical services. +","Temperature, light, pH, pCO2, nutrient levels, community composition, turbidity +","Biodiversity, stoichiometry, benthic ecology, plankton ecology, seagrass ecology, ice studies, reproductive evolution in fishes +"," + + + + + 59.8431619,23.2440297 + +",,,"Wet labs, outdoor aquarium facility, climatic chambers, bio-optical instrumentation (spectrophotometry, spectrofluorometry), masspectrometry, carbon analyzers, microscopes with digital imaging, isotope lab, chemistry lab, CTD, meters for light, turbidity and oxygen, field sampling equipment, research vessels, hovercraft +","Dormitories with ca 100 beds, full board, self-service kitchens, sea-side sauna +","http://www.finmari-infrastructure.fi/field-stations/tvarminne-uhel/ +"," + + + +Pristine nature reserve for experimental set-ups + + + + +SYKE-MRC field mesocosm work at Tvärminne + + + + +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}" +test 13,"[TEST CASE] Abstract: only ""Description of Facility"" data available",University of Helsinki,Finland,Europe,"University of Helsinki + P.O. Box 3 + 00014 University of Helsinki + Finland +","Director: Marko Reinikainen + Research Coordinator: Joanna Norkko +Please login or request access to view contact information.,Please login or request access to view contact information. +",2025 - present,"pelagic – marine – outdoor + A large nature reserve surrounding TZS is dedicated to research, providing access to a pristine environment for field mesocosms. Research vessels and technical services support sampling and maintenance; a hovercraft allows winter-studies. Aquarium facilities with natural or artificial light are available for flow-through experiments at up to 100 000 m3 daily water capacity. A marine laboratory provides analytical services. +",,"Biodiversity, stoichiometry, benthic ecology, plankton ecology, seagrass ecology, ice studies, reproductive evolution in fishes +"," + + + + + 59.8431619,23.2440297 + +",,,,"Dormitories with ca 100 beds, full board, self-service kitchens, sea-side sauna +","http://www.finmari-infrastructure.fi/field-stations/tvarminne-uhel/ +"," + + + +Pristine nature reserve for experimental set-ups + + + + +SYKE-MRC field mesocosm work at Tvärminne + + + + +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}" +test 14,"[TEST CASE] Abstract: only ""Equipment"" data available",University of Helsinki,Finland,Europe,"University of Helsinki + P.O. Box 3 + 00014 University of Helsinki + Finland +","Director: Marko Reinikainen + Research Coordinator: Joanna Norkko +Please login or request access to view contact information.,Please login or request access to view contact information. +",2026 - present,,,"Biodiversity, stoichiometry, benthic ecology, plankton ecology, seagrass ecology, ice studies, reproductive evolution in fishes +"," + + + + + 59.8431619,23.2440297 + +",,,"Wet labs, outdoor aquarium facility, climatic chambers, bio-optical instrumentation (spectrophotometry, spectrofluorometry), masspectrometry, carbon analyzers, microscopes with digital imaging, isotope lab, chemistry lab, CTD, meters for light, turbidity and oxygen, field sampling equipment, research vessels, hovercraft +","Dormitories with ca 100 beds, full board, self-service kitchens, sea-side sauna +","http://www.finmari-infrastructure.fi/field-stations/tvarminne-uhel/ +"," + + + +Pristine nature reserve for experimental set-ups + + + + +SYKE-MRC field mesocosm work at Tvärminne + + + + +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}" +test 15,"[TEST CASE] Abstract: only ""Controlled Parameters"" data available",University of Helsinki,Finland,Europe,"University of Helsinki + P.O. Box 3 + 00014 University of Helsinki + Finland +","Director: Marko Reinikainen + Research Coordinator: Joanna Norkko +Please login or request access to view contact information.,Please login or request access to view contact information. +",2027 - present,,"Temperature, light, pH, pCO2, nutrient levels, community composition, turbidity +","Biodiversity, stoichiometry, benthic ecology, plankton ecology, seagrass ecology, ice studies, reproductive evolution in fishes +"," + + + + + 59.8431619,23.2440297 + +",,,,"Dormitories with ca 100 beds, full board, self-service kitchens, sea-side sauna +","http://www.finmari-infrastructure.fi/field-stations/tvarminne-uhel/ +"," + + + +Pristine nature reserve for experimental set-ups + + + + +SYKE-MRC field mesocosm work at Tvärminne + + + + +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}" \ No newline at end of file From 22efbffc4dd30050b3f2e5b4a68b803b3bd06b03 Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 13 Oct 2025 14:09:35 +0200 Subject: [PATCH 061/149] feat: custom_title is dynamical --- server/services/searchAQUANAVI.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/server/services/searchAQUANAVI.php b/server/services/searchAQUANAVI.php index ee74dbd80..0e8f3068b 100644 --- a/server/services/searchAQUANAVI.php +++ b/server/services/searchAQUANAVI.php @@ -20,10 +20,9 @@ $post_params["document_types"] = ["F"]; $post_params["sorting"] = "most-relevant"; $post_params["time_range"] = "user-defined"; -$post_params["custom_title"] = "aquatic mesocosm facilities"; // And some others... -$params_array = ["from", "to", "document_types", "sorting", "min_descsize", "lang_id"]; +$params_array = ["from", "to", "document_types", "sorting", "min_descsize", "lang_id", "custom_title"]; $result = search("aquanavi", $query, $post_params, $params_array, false, true, null, $precomputed_id, false); echo $result From e7c10e83757fb7b056db719a3f5aca1e97fa7a55 Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 13 Oct 2025 14:20:35 +0200 Subject: [PATCH 062/149] feat: continent information in the coverage field --- .../workers/common/common/aquanavi/mapping.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/server/workers/common/common/aquanavi/mapping.py b/server/workers/common/common/aquanavi/mapping.py index 409a6cc30..b6a864e76 100644 --- a/server/workers/common/common/aquanavi/mapping.py +++ b/server/workers/common/common/aquanavi/mapping.py @@ -12,6 +12,7 @@ REQUIRED_COLUMNS = [ "Name", "Country", + "Continent", "Equipment", "Research Topics", "Specialist areas", @@ -110,11 +111,26 @@ def get_years_of_experiments(row): return None, None def get_coverage(row): + """ + Creates a coverage field information for each data entry. The coverage field contains + string value in format as presented in the line below: + "country=France; continent=Europe; east=-0.618181; north=44.776596 ; start=2010-07; end=2012-06" + + Args: + row (pandas.Series): String DataFrame. + + Returns: + str: String in the coverage field format. + """ + COUNTRY_COLUMN_NAME = 'Country' + CONTINENT_COLUMN_NAME = 'Continent' + latitude, longitude = get_latitude_longitude(row) start, end = get_years_of_experiments(row) coverage_parts = [] - coverage_parts.append(f"country={str(row['Country']).strip()}" if row["Country"] else "country= ") + coverage_parts.append(f"country={str(row[COUNTRY_COLUMN_NAME]).strip()}" if row[COUNTRY_COLUMN_NAME] else "country= ") + coverage_parts.append(f"continent={str(row[CONTINENT_COLUMN_NAME]).strip()}" if row[CONTINENT_COLUMN_NAME] else "continent= ") coverage_parts.append(f"east='{longitude}'" if longitude else "east=") coverage_parts.append(f"north='{latitude}'" if latitude else "north=") coverage_parts.append(f"start='{start}'" if start else "start=") From e561db963087577019f9b5d2f342d11f5d5b693d Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 13 Oct 2025 14:21:28 +0200 Subject: [PATCH 063/149] bugfix: custom_title is not required parameter --- server/services/searchAQUANAVI.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/services/searchAQUANAVI.php b/server/services/searchAQUANAVI.php index 0e8f3068b..4ff05e805 100644 --- a/server/services/searchAQUANAVI.php +++ b/server/services/searchAQUANAVI.php @@ -22,7 +22,7 @@ $post_params["time_range"] = "user-defined"; // And some others... -$params_array = ["from", "to", "document_types", "sorting", "min_descsize", "lang_id", "custom_title"]; +$params_array = ["from", "to", "document_types", "sorting", "min_descsize", "lang_id"]; $result = search("aquanavi", $query, $post_params, $params_array, false, true, null, $precomputed_id, false); echo $result From d8a80bb8134d40b8328c5ad14ea599908b788082 Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 13 Oct 2025 14:39:17 +0200 Subject: [PATCH 064/149] feat: constant with columns names to avoid typos --- .../workers/common/common/aquanavi/mapping.py | 76 ++++++++++--------- 1 file changed, 39 insertions(+), 37 deletions(-) diff --git a/server/workers/common/common/aquanavi/mapping.py b/server/workers/common/common/aquanavi/mapping.py index b6a864e76..cc8bdf7e2 100644 --- a/server/workers/common/common/aquanavi/mapping.py +++ b/server/workers/common/common/aquanavi/mapping.py @@ -9,20 +9,21 @@ CSV_PATH_WITH_TEST_DATA = "common/common/aquanavi/mesocosm_data_cleaned_with_test_cases.csv" DEFAULT_DOCUMENT_TYPE = "physical object" DEFAULT_RESULT_TYPE = ['Other/Unknown material'] -REQUIRED_COLUMNS = [ - "Name", - "Country", - "Continent", - "Equipment", - "Research Topics", - "Specialist areas", - "Primary interests", - "Controlled Parameters", - "Description of Facility", - "Facility location(s) split", - "Years of Mesocosm Experiments", - "Photos of experiments/installations images", -] +COLUMNS = { + "url": "url", + "name": "Name", + "country": "Country", + "continent": "Continent", + "equipment": "Equipment", + "research_topics": "Research Topics", + "specialist_areas": "Specialist areas", + "primary_interests": "Primary interests", + "controlled_parameters": "Controlled Parameters", + "description": "Description of Facility", + "location": "Facility location(s) split", + "years_of_experiments": "Years of Mesocosm Experiments", + "photos_of_experiments": "Photos of experiments/installations images", +} def process_string_column(row, name): """ @@ -55,7 +56,7 @@ def remove_trailing_dot(string): return string def get_latitude_longitude(row): - coordinates_string = str(row["Facility location(s) split"]).strip() + coordinates_string = str(row[COLUMNS['location']]).strip() latitude, longitude = None, None @@ -72,7 +73,7 @@ def get_latitude_longitude(row): def get_years_of_experiments(row): # Supported formats: yyyy - present; yyyy - yyyy; yyyy to present; since yyyy; # started yyyy / starting yyyy / operational since yyyy; yyyy-present; - text = str(row["Years of Mesocosm Experiments"]).strip() + text = str(row[COLUMNS['years_of_experiments']]).strip() if not text: return None, None @@ -122,15 +123,12 @@ def get_coverage(row): Returns: str: String in the coverage field format. """ - COUNTRY_COLUMN_NAME = 'Country' - CONTINENT_COLUMN_NAME = 'Continent' - latitude, longitude = get_latitude_longitude(row) start, end = get_years_of_experiments(row) coverage_parts = [] - coverage_parts.append(f"country={str(row[COUNTRY_COLUMN_NAME]).strip()}" if row[COUNTRY_COLUMN_NAME] else "country= ") - coverage_parts.append(f"continent={str(row[CONTINENT_COLUMN_NAME]).strip()}" if row[CONTINENT_COLUMN_NAME] else "continent= ") + coverage_parts.append(f"country={str(row[COLUMNS['country']]).strip()}" if row[COLUMNS['country']] else "country= ") + coverage_parts.append(f"continent={str(row[COLUMNS['continent']]).strip()}" if row[COLUMNS['continent']] else "continent= ") coverage_parts.append(f"east='{longitude}'" if longitude else "east=") coverage_parts.append(f"north='{latitude}'" if latitude else "north=") coverage_parts.append(f"start='{start}'" if start else "start=") @@ -205,11 +203,8 @@ def get_id(row): Returns: str: Identifier for a specific record. The identifier consists of: url + location in hashed form. """ - URL_COLUMN_NAME = "url" - LOCATION_COLUMN_NAME = "Facility location(s) split" - - url = str(row[URL_COLUMN_NAME]).strip() if row[URL_COLUMN_NAME] else "" - location = str(row[LOCATION_COLUMN_NAME]).strip() if row[LOCATION_COLUMN_NAME] else "" + url = str(row[COLUMNS['url']]).strip() if row[COLUMNS['url']] else "" + location = str(row[COLUMNS['location']]).strip() if row[COLUMNS['location']] else "" combined_url_and_location = url + location hasher = hashlib.sha256() @@ -221,26 +216,33 @@ def check_that_csv_file_exists(csv_path): if not csv_path.exists(): sys.exit(f"CSV does not exists: {csv_path}.") -def check_that_required_rows_exists(df, csv_path): - for col in REQUIRED_COLUMNS: - if col not in df.columns: - sys.exit(f"The '{col}' is missing in the {csv_path} file") +def check_that_required_columns_exists(df: pd.DataFrame, csv_path: str): + """ + Checks that all required columns are present in the DataFrame based on values from the COLUMNS dictionary. + + Args: + df (pd.DataFrame): The DataFrame to be checked. + csv_path (str): Path to CSV file (used for error reporting). + + Raises: + SystemExit: If any required column is missing. + """ + for required_col_name in COLUMNS.values(): + if required_col_name not in df.columns: + sys.exit(f"The '{required_col_name}' is missing in the {csv_path} file") def map_sample_data(): csv_path = Path(CSV_PATH) - check_that_csv_file_exists(csv_path) - df = pd.read_csv(csv_path).fillna("") - - check_that_required_rows_exists(df, CSV_PATH) + check_that_required_columns_exists(df, CSV_PATH) result = [] for _, row in df.iterrows(): id = get_id(row) - title = str(row["Name"]).strip() if row["Name"] else "" - url = str(row["url"]).strip() if row["url"] else "" - image = row["Photos of experiments/installations images"] if row["Photos of experiments/installations images"] else "" + title = str(row[COLUMNS['name']]).strip() if row[COLUMNS['name']] else "" + url = str(row[COLUMNS['url']]).strip() if row[COLUMNS['url']] else "" + image = row[COLUMNS['photos_of_experiments']] if row[COLUMNS['photos_of_experiments']] else "" result.append({ "id": id, From 1f76561201b5b09550d1f1210d541ebe41e5f6ae Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 13 Oct 2025 15:11:33 +0200 Subject: [PATCH 065/149] feat: primary_interests and research_topics in the abstract field --- .../workers/common/common/aquanavi/mapping.py | 74 ++--- .../mesocosm_data_cleaned_with_test_cases.csv | 257 +++++++----------- 2 files changed, 136 insertions(+), 195 deletions(-) diff --git a/server/workers/common/common/aquanavi/mapping.py b/server/workers/common/common/aquanavi/mapping.py index cc8bdf7e2..c95fa76ff 100644 --- a/server/workers/common/common/aquanavi/mapping.py +++ b/server/workers/common/common/aquanavi/mapping.py @@ -138,31 +138,57 @@ def get_coverage(row): return result def get_abstract(row): + """ + Creates the abstract field for each data entry. The abstract field contains + string value with data from such set of columns: Facility description, Equipment, + Controlled Parameters, Primary interests and Research topics. If no column contains information, + an empty string is returned. If the column does not contain any information, it will be added + in the string as follows: "Equipment: description not available". + + Args: + row (pandas.Series): String DataFrame. + + Returns: + str: String in the abstract field format. + """ + AMOUNT_OF_ALL_POSSIBLE_ENTRIES = 5 count_of_not_available_parts = 0 abstract_parts = [] - if (row['Description of Facility']): - abstract_parts.append(f"Facility description: {remove_trailing_dot(str(row['Description of Facility']).strip())}") - else: + def get_not_available_message_and_increase_counter(name): + nonlocal count_of_not_available_parts count_of_not_available_parts += 1 - abstract_parts.append("Facility description: not available") + return f"{name}: description not available" - if (row['Equipment']): - abstract_parts.append(f"Equipment: {remove_trailing_dot(str(row['Equipment']).strip())}") + if (row[COLUMNS['description']]): + abstract_parts.append(f"Facility description: {remove_trailing_dot(str(row[COLUMNS['description']]).strip())}") else: - count_of_not_available_parts += 1 - abstract_parts.append("Equipment: not available") + abstract_parts.append(get_not_available_message_and_increase_counter("Facility description")) - if (row['Controlled Parameters']): - abstract_parts.append(f"Controlled Parameters: {remove_trailing_dot(str(row['Controlled Parameters']).strip())}") + if (row[COLUMNS['equipment']]): + abstract_parts.append(f"Equipment: {remove_trailing_dot(str(row[COLUMNS['equipment']]).strip())}") else: - count_of_not_available_parts += 1 - abstract_parts.append("Controlled Parameters: not available") + abstract_parts.append(get_not_available_message_and_increase_counter('Equipment')) - if (count_of_not_available_parts == 3): + if (row[COLUMNS['controlled_parameters']]): + abstract_parts.append(f"Controlled parameters: {remove_trailing_dot(str(row[COLUMNS['controlled_parameters']]).strip())}") + else: + abstract_parts.append(get_not_available_message_and_increase_counter('Controlled Parameters')) + + if (row[COLUMNS['primary_interests']]): + abstract_parts.append(f"Primary interests: {remove_trailing_dot(str(row[COLUMNS['primary_interests']]).strip())}") + else: + abstract_parts.append(get_not_available_message_and_increase_counter('Primary interests')) + + if (row[COLUMNS['research_topics']]): + abstract_parts.append(f"Research topics: {remove_trailing_dot(str(row[COLUMNS['research_topics']]).strip())}") + else: + abstract_parts.append(get_not_available_message_and_increase_counter('Research topics')) + + if (count_of_not_available_parts == AMOUNT_OF_ALL_POSSIBLE_ENTRIES): return "" - return "; ".join(abstract_parts) + return "; ".join(abstract_parts) + '.' def get_keywords(row): keywords_parts = [] @@ -175,22 +201,6 @@ def get_keywords(row): else: keywords_parts.append("not available") - # Adding the "Primary interests" - primary_interests = process_string_column(row, "Primary interests") - primary_interests_without_trailing_dot = remove_trailing_dot(primary_interests) - if primary_interests_without_trailing_dot: - keywords_parts.append(f"Primary interests: {primary_interests_without_trailing_dot}") - else: - keywords_parts.append("Primary interests: not available") - - # Adding the "Research Topics" - research_topics = process_string_column(row, "Research Topics") - research_topics_without_trailing_dot = remove_trailing_dot(research_topics) - if research_topics_without_trailing_dot: - keywords_parts.append(f"Research topics: {research_topics_without_trailing_dot}") - else: - keywords_parts.append("Research topics: not available") - return "; ".join(keywords_parts) def get_id(row): @@ -232,10 +242,10 @@ def check_that_required_columns_exists(df: pd.DataFrame, csv_path: str): sys.exit(f"The '{required_col_name}' is missing in the {csv_path} file") def map_sample_data(): - csv_path = Path(CSV_PATH) + csv_path = Path(CSV_PATH_WITH_TEST_DATA) check_that_csv_file_exists(csv_path) df = pd.read_csv(csv_path).fillna("") - check_that_required_columns_exists(df, CSV_PATH) + check_that_required_columns_exists(df, CSV_PATH_WITH_TEST_DATA) result = [] for _, row in df.iterrows(): diff --git a/server/workers/common/common/aquanavi/mesocosm_data_cleaned_with_test_cases.csv b/server/workers/common/common/aquanavi/mesocosm_data_cleaned_with_test_cases.csv index 419c0ddb3..5cdcfe3d9 100644 --- a/server/workers/common/common/aquanavi/mesocosm_data_cleaned_with_test_cases.csv +++ b/server/workers/common/common/aquanavi/mesocosm_data_cleaned_with_test_cases.csv @@ -1,4 +1,4 @@ -url,Name,Legal name of organisation,Country,Continent,Organisation address,Primary contact information (PI),Years of Mesocosm Experiments,Description of Facility,Controlled Parameters,Research Topics,Facility location(s),Primary interests,Specialist areas,Equipment,Lodging,Source of Information,Photos of experiments/installations,Photos of experiments/installations images,Equipment images,Lodging images,Manipulations,Facility location(s) split,location_facilities +url,Name,Legal name of organisation,Country,Continent,Organisation address,Primary contact information (PI),Years of Mesocosm Experiments,Description of Facility,Controlled Parameters,Research Topics,Facility location(s),Primary interests,Specialist areas,Equipment,Lodging,Source of Information,Photos of experiments/installations,Photos of experiments/installations images,Equipment images,Lodging images,Manipulations,Facility location(s) split,location_facilities,,, https://mesocosm.org/mesocosm/sites-aquanet-skogaryd-research-station/,SITES AquaNet – Skogaryd Research Station,SITES and Göteborg University,Sweden,Europe,"Göteborg University Inst. for Geosciences Guldhedsgatan 5a @@ -40,7 +40,7 @@ Photo credit: Leif Klemedtsson   -","['http://mesocosm.org/wp-content/uploads/2018/05/Skogaryd_2-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Skogaryd_1-1024x683.jpg']",,,,"['58.3712', ' 12.1613']","{'coordinates': ['58.3712', '12.1613']}" +","['http://mesocosm.org/wp-content/uploads/2018/05/Skogaryd_2-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Skogaryd_1-1024x683.jpg']",,,,"['58.3712', ' 12.1613']","{'coordinates': ['58.3712', '12.1613']}",,, https://mesocosm.org/mesocosm/university-koblenz-landau/,Landau Stream Mesocosm Facility (LSMF),University Koblenz-Landau,Germany,Europe,"University Koblenz-Landau Fortstraße 7 76829 Landau @@ -89,7 +89,7 @@ Stream mesocosm facility at the Landau Campus -","['http://mesocosm.org/wp-content/uploads/2017/05/Stream-Mesocosms-Landau_400px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Fliessrinnenanlage_400.jpg']",,,,"['49.20269', '8.106179999999995']","{'coordinates': ['49.20269', '8.106179999999995']}" +","['http://mesocosm.org/wp-content/uploads/2017/05/Stream-Mesocosms-Landau_400px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Fliessrinnenanlage_400.jpg']",,,,"['49.20269', '8.106179999999995']","{'coordinates': ['49.20269', '8.106179999999995']}",,, https://mesocosm.org/mesocosm/sites-aquanet-erken-laboratory/,SITES AquaNet-Erken Laboratory,Uppsala University,Sweden,Europe,"Uppsala University: P.O. Box 256 SE-751 05 Uppsala @@ -134,7 +134,7 @@ Photo credit: Erik Sahlee -","['http://mesocosm.org/wp-content/uploads/2018/05/Erken_2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Erken_1-1024x705.jpg']",,,,"['59.8354205', ' 18.6327766']","{'coordinates': ['59.8354205', '18.6327766']}" +","['http://mesocosm.org/wp-content/uploads/2018/05/Erken_2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Erken_1-1024x705.jpg']",,,,"['59.8354205', ' 18.6327766']","{'coordinates': ['59.8354205', '18.6327766']}",,, https://mesocosm.org/mesocosm/resources-garden-of-aquatic-plant/,Resources garden of aquatic plant,"Wuhan Botanical Garden, Chinese Academy of Sciences",China,Asia,"Lumo Road #1, Wuhan, China ","(+86)13297957139 Please login or request access to view contact information. @@ -174,7 +174,7 @@ Tanks with different macrophytes and water depth -","['http://mesocosm.org/wp-content/uploads/2019/03/The-green-house-and-the-heating-control-system-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Outdoor-tanks-with-different-size-and-area-300x225.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Tanks-with-different-macrophytes-and-water-depth-300x225.jpeg']",,,,"['30.54694', '114.41972']","{'coordinates': ['30.54694', '114.41972']}" +","['http://mesocosm.org/wp-content/uploads/2019/03/The-green-house-and-the-heating-control-system-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Outdoor-tanks-with-different-size-and-area-300x225.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Tanks-with-different-macrophytes-and-water-depth-300x225.jpeg']",,,,"['30.54694', '114.41972']","{'coordinates': ['30.54694', '114.41972']}",,, https://mesocosm.org/mesocosm/large-experimental-array-of-ponds-leap/,Large Experimental Array of Ponds (LEAP),McGill University,Canada,North America,"McGill Department of Biology Stewart Biology Bldg 1205 Dr Penfield Ave @@ -232,7 +232,7 @@ Depth and multiparameter probe (YSI) physico-chemical measurements.  Photo cred -","['http://mesocosm.org/wp-content/uploads/2019/04/3-1024x769.png', 'http://mesocosm.org/wp-content/uploads/2019/04/2-1024x368.png', 'http://mesocosm.org/wp-content/uploads/2019/04/1.png']",,,,"['45.5368', ' -73.1578']","{'coordinates': ['45.5368', '-73.1578']}" +","['http://mesocosm.org/wp-content/uploads/2019/04/3-1024x769.png', 'http://mesocosm.org/wp-content/uploads/2019/04/2-1024x368.png', 'http://mesocosm.org/wp-content/uploads/2019/04/1.png']",,,,"['45.5368', ' -73.1578']","{'coordinates': ['45.5368', '-73.1578']}",,, https://mesocosm.org/mesocosm/cmu-biological-station-mesocosm-facility/,[TEST CASE] Identifier: same with some other mesocosm; Location: different from some other mesocosm,"Eawag, Swiss Federal Institute of Aquatic Science and Technology",Switzerland,Europe,"Eawag, Überlandstrasse 133, 8600 Dübendorf, Switzerland ","Christoph Vorburger Head of Experimental Ponds Committee @@ -279,7 +279,7 @@ Image 3: Scientists taking samples at Eawag’s Experimental Pond Facility in D -","['http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-1-300x186.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-2-300x156.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-3-300x174.jpg']",,,,"['47.40515', '8.60855']","{'coordinates': ['47.40515', '8.60855']}" +","['http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-1-300x186.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-2-300x156.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-3-300x174.jpg']",,,,"['47.40515', '8.60855']","{'coordinates': ['47.40515', '8.60855']}",,, https://mesocosm.org/mesocosm/cmu-biological-station-mesocosm-facility/,[TEST CASE] Identifier: same with some other mesocosm; Location: same with some other mesocosm,"CMU Biological Station, Central Michigan University",USA,North America,"P.O. Box 206, Beaver Island, MI 49782 @@ -321,7 +321,7 @@ climate change ","on site ","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx ","photo credits: CMU Communications -",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}" +",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}",,, test 1,[TEST CASE] Aquatron Laboratory,Dalhousie University Life Sciences Centre,,North-America,"Dalhousie University Life Sciences Centre 1355 Oxford Street PO BOX 15000 @@ -376,7 +376,7 @@ Aquatron Laboratory: Phytoplankton cultivation -","['http://mesocosm.org/wp-content/uploads/2017/05/aquatronS.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Aquatron-empty_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/halifax_pool_calltoaction.image_.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/featureslide.image_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron1_400.jpg']",,,,"['44.6356125', '-63.5944334']","{'coordinates': ['44.6356125', '-63.5944334']}" +","['http://mesocosm.org/wp-content/uploads/2017/05/aquatronS.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Aquatron-empty_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/halifax_pool_calltoaction.image_.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/featureslide.image_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron1_400.jpg']",,,,"['44.6356125', '-63.5944334']","{'coordinates': ['44.6356125', '-63.5944334']}",,, test 2,[TEST CASE] IMDEA Water Institute,IMDEA Water Foundation,Spain,Europe,"IMDEA Water Institute Avenida Punto Com 2 PO Box 28805, Alcala de Henares @@ -420,192 +420,125 @@ Photo: Andreu Rico   -","['http://mesocosm.org/wp-content/uploads/2018/04/IMG_2170-300x181.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/20160519_121359-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/20170512_154035_resized-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/IMG-20170512-WA0010-300x169.jpg']",,,,"['40.5133474', ' -3.3386556000000382']","{'coordinates': ['40.5133474', '-3.3386556000000382']}" -test 3,[TEST CASE] Keywords: no keywords information at all,"CMU Biological Station, Central Michigan University",USA,North America,"P.O. Box 206, -Beaver Island, -MI 49782 -USA -","Don Uzarski -Please login or request access to view contact information. -",2015 - present," -12 fibreglass tanks each 250 gallons -including metal halide -timer-controlled lights -housed on Lake Michigan with access to epilimnetic and metalimnetic water - -"," -Light -Temperature - -",," +","['http://mesocosm.org/wp-content/uploads/2018/04/IMG_2170-300x181.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/20160519_121359-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/20170512_154035_resized-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/IMG-20170512-WA0010-300x169.jpg']",,,,"['40.5133474', ' -3.3386556000000382']","{'coordinates': ['40.5133474', '-3.3386556000000382']}",,, +test 8,[TEST CASE] Non-latin characters (Chinese simplified),,China,Asia,____,____,2020 - present,___________,__,"______________ +_______"," 45.7422222,-85.50944444444444 -",,,"YSI multiprobes -","on site +","______________ +_______","______________ +_______",____,"on site ","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx ","photo credits: CMU Communications -",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}" -test 4,"[TEST CASE] Keywords: only ""Specialist areas"" column information","CMU Biological Station, Central Michigan University",USA,North America,"P.O. Box 206, -Beaver Island, -MI 49782 -USA -","Don Uzarski -Please login or request access to view contact information. -",2016 - present," -12 fibreglass tanks each 250 gallons -including metal halide -timer-controlled lights -housed on Lake Michigan with access to epilimnetic and metalimnetic water - -"," -Light -Temperature - -",," +",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}",,, +test 9,[TEST CASE] Non-latin characters (Arabic),__ ____ ______,___,_______,__ ____ ______,__ ____ ______,2021 - present,_____ _____ _____ _________ __ Eawag __ Dübendorf __ 36 ____ ______ ______ __ _________ ______ ________ ________. ____ ___ _____ 1.5 ___ __ ___ ___ __ ____ ____ (0.5 ___)_ _______ __ ___ ___ 15 _____ ______ __ ______ ______. ____ _____ _____ ______ _____ _______ ___ _______.,____ _______,_______ ________ _______," 45.7422222,-85.50944444444444 -",,"Ecology, Global warming","YSI multiprobes -","on site +",__ ____ ______,__ ____ ______,__ ____ ______,"on site ","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx ","photo credits: CMU Communications -",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}" -test 5,"[TEST CASE] Keywords: only ""Primary interests"" information","CMU Biological Station, Central Michigan University",USA,North America,"P.O. Box 206, -Beaver Island, -MI 49782 -USA -","Don Uzarski -Please login or request access to view contact information. -",2017 - present," -12 fibreglass tanks each 250 gallons -including metal halide -timer-controlled lights -housed on Lake Michigan with access to epilimnetic and metalimnetic water - -"," -Light -Temperature - -",," +",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}",,, +test 10 ,[TEST CASE] Non-latin characters (Greek),___ _�______ ________,Greece,Europe,___ _�______ ________,___ _�______ ________,2022 - present,"_ ___________ ____________ ______ ___ Eawag ___ Dübendorf _�_________ _�_ 36 ___________ ______ _______________ _�_ �_______ __________ __ ____ _______. __ ______ _____ _____ 1,5 m __ ___ ____ ____ ___ ___ �_____ (0,5 m) ___ ____________ ___ 15 m3 ______ _____. __ ______ _�_____ __ _�_____________ ___ __ _�_____________ �_____ ______ ___ �_________.",___,_________ _�__________," 45.7422222,-85.50944444444444 -","Ecology, Global warming",,"YSI multiprobes -","on site +",_________ _�__________,_________ _�__________,___ _�______ ________,"on site ","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx ","photo credits: CMU Communications -",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}" -test 6,"[TEST CASE] Keywords: only ""Research Topics"" information","CMU Biological Station, Central Michigan University",USA,North America,"P.O. Box 206, -Beaver Island, -MI 49782 -USA -","Don Uzarski -Please login or request access to view contact information. -",2018 - present," -12 fibreglass tanks each 250 gallons -including metal halide -timer-controlled lights -housed on Lake Michigan with access to epilimnetic and metalimnetic water +",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}",,, +test 11,[TEST CASE] Abstract: no information at all,University of Helsinki,Finland,Europe,"University of Helsinki + P.O. Box 3 + 00014 University of Helsinki + Finland +","Director: Marko Reinikainen + Research Coordinator: Joanna Norkko +Please login or request access to view contact information.,Please login or request access to view contact information. +",2023 - present,,,," + + + + 59.8431619,23.2440297 + +",,,,"Dormitories with ca 100 beds, full board, self-service kitchens, sea-side sauna +","http://www.finmari-infrastructure.fi/field-stations/tvarminne-uhel/ "," -Light -Temperature -","Ecology, Global warming"," +Pristine nature reserve for experimental set-ups - 45.7422222,-85.50944444444444 - -",,,"YSI multiprobes -","on site -","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx -","photo credits: CMU Communications -",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}" -test 7,[TEST CASE] Keywords: all information available,"CMU Biological Station, Central Michigan University",USA,North America,"P.O. Box 206, -Beaver Island, -MI 49782 -USA -","Don Uzarski -Please login or request access to view contact information. -",2019 - present," -12 fibreglass tanks each 250 gallons -including metal halide -timer-controlled lights -housed on Lake Michigan with access to epilimnetic and metalimnetic water -"," -Light -Temperature -","Ecology, Global warming"," +SYKE-MRC field mesocosm work at Tvärminne - 45.7422222,-85.50944444444444 - -","Ecology, Global warming","Ecology, Global warming","YSI multiprobes -","on site -","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx -","photo credits: CMU Communications -",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}" -test 8,[TEST CASE] Non-latin characters (Chinese simplified),,China,Asia,____,____,2020 - present,___________,__,"______________ -_______"," +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",,, +test 12,[TEST CASE] Abstract: all information available,University of Helsinki,Finland,Europe,"University of Helsinki + P.O. Box 3 + 00014 University of Helsinki + Finland +","Director: Marko Reinikainen + Research Coordinator: Joanna Norkko +Please login or request access to view contact information.,Please login or request access to view contact information. +",2024 - present,"pelagic – marine – outdoor + A large nature reserve surrounding TZS is dedicated to research, providing access to a pristine environment for field mesocosms. Research vessels and technical services support sampling and maintenance; a hovercraft allows winter-studies. Aquarium facilities with natural or artificial light are available for flow-through experiments at up to 100 000 m3 daily water capacity. A marine laboratory provides analytical services. +","Temperature, light, pH, pCO2, nutrient levels, community composition, turbidity +","Biodiversity, stoichiometry, benthic ecology, plankton ecology, seagrass ecology, ice studies, reproductive evolution in fishes +"," - 45.7422222,-85.50944444444444 + 59.8431619,23.2440297 -","______________ -_______","______________ -_______",____,"on site -","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx -","photo credits: CMU Communications -",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}" -test 9,[TEST CASE] Non-latin characters (Arabic),__ ____ ______,___,_______,__ ____ ______,__ ____ ______,2021 - present,_____ _____ _____ _________ __ Eawag __ Dübendorf __ 36 ____ ______ ______ __ _________ ______ ________ ________. ____ ___ _____ 1.5 ___ __ ___ ___ __ ____ ____ (0.5 ___)_ _______ __ ___ ___ 15 _____ ______ __ ______ ______. ____ _____ _____ ______ _____ _______ ___ _______.,____ _______,_______ ________ _______," +"," +Invasive species +eutrophication +climate change +",,"Wet labs, outdoor aquarium facility, climatic chambers, bio-optical instrumentation (spectrophotometry, spectrofluorometry), masspectrometry, carbon analyzers, microscopes with digital imaging, isotope lab, chemistry lab, CTD, meters for light, turbidity and oxygen, field sampling equipment, research vessels, hovercraft +","Dormitories with ca 100 beds, full board, self-service kitchens, sea-side sauna +","http://www.finmari-infrastructure.fi/field-stations/tvarminne-uhel/ +"," - 45.7422222,-85.50944444444444 - -",__ ____ ______,__ ____ ______,__ ____ ______,"on site -","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx -","photo credits: CMU Communications -",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}" -"test 10 ",[TEST CASE] Non-latin characters (Greek),___ _�______ ________,Greece,Europe,___ _�______ ________,___ _�______ ________,2022 - present,"_ ___________ ____________ ______ ___ Eawag ___ Dübendorf _�_________ _�_ 36 ___________ ______ _______________ _�_ �_______ __________ __ ____ _______. __ ______ _____ _____ 1,5 m __ ___ ____ ____ ___ ___ �_____ (0,5 m) ___ ____________ ___ 15 m3 ______ _____. __ ______ _�_____ __ _�_____________ ___ __ _�_____________ �_____ ______ ___ �_________.",___,_________ _�__________," +Pristine nature reserve for experimental set-ups - 45.7422222,-85.50944444444444 - -",_________ _�__________,_________ _�__________,___ _�______ ________,"on site -","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx -","photo credits: CMU Communications -",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}" -test 11,[TEST CASE] Abstract: no information at all,University of Helsinki,Finland,Europe,"University of Helsinki +SYKE-MRC field mesocosm work at Tvärminne + + + + +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",,, +test 13,"[TEST CASE] Abstract: only ""Description of Facility"" data available",University of Helsinki,Finland,Europe,"University of Helsinki P.O. Box 3 00014 University of Helsinki Finland ","Director: Marko Reinikainen Research Coordinator: Joanna Norkko Please login or request access to view contact information.,Please login or request access to view contact information. -",2023 - present,,,"Biodiversity, stoichiometry, benthic ecology, plankton ecology, seagrass ecology, ice studies, reproductive evolution in fishes -"," +",2025 - present,"pelagic – marine – outdoor + A large nature reserve surrounding TZS is dedicated to research, providing access to a pristine environment for field mesocosms. Research vessels and technical services support sampling and maintenance; a hovercraft allows winter-studies. Aquarium facilities with natural or artificial light are available for flow-through experiments at up to 100 000 m3 daily water capacity. A marine laboratory provides analytical services. +",,," @@ -628,19 +561,15 @@ SYKE-MRC field mesocosm work at Tvärminne -","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}" -test 12,[TEST CASE] Abstract: all information available,University of Helsinki,Finland,Europe,"University of Helsinki +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",,, +test 14,"[TEST CASE] Abstract: only ""Equipment"" data available",University of Helsinki,Finland,Europe,"University of Helsinki P.O. Box 3 00014 University of Helsinki Finland ","Director: Marko Reinikainen Research Coordinator: Joanna Norkko Please login or request access to view contact information.,Please login or request access to view contact information. -",2024 - present,"pelagic – marine – outdoor - A large nature reserve surrounding TZS is dedicated to research, providing access to a pristine environment for field mesocosms. Research vessels and technical services support sampling and maintenance; a hovercraft allows winter-studies. Aquarium facilities with natural or artificial light are available for flow-through experiments at up to 100 000 m3 daily water capacity. A marine laboratory provides analytical services. -","Temperature, light, pH, pCO2, nutrient levels, community composition, turbidity -","Biodiversity, stoichiometry, benthic ecology, plankton ecology, seagrass ecology, ice studies, reproductive evolution in fishes -"," +",2026 - present,,,," @@ -664,18 +593,16 @@ SYKE-MRC field mesocosm work at Tvärminne -","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}" -test 13,"[TEST CASE] Abstract: only ""Description of Facility"" data available",University of Helsinki,Finland,Europe,"University of Helsinki +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",,, +test 15,"[TEST CASE] Abstract: only ""Controlled Parameters"" data available",University of Helsinki,Finland,Europe,"University of Helsinki P.O. Box 3 00014 University of Helsinki Finland ","Director: Marko Reinikainen Research Coordinator: Joanna Norkko Please login or request access to view contact information.,Please login or request access to view contact information. -",2025 - present,"pelagic – marine – outdoor - A large nature reserve surrounding TZS is dedicated to research, providing access to a pristine environment for field mesocosms. Research vessels and technical services support sampling and maintenance; a hovercraft allows winter-studies. Aquarium facilities with natural or artificial light are available for flow-through experiments at up to 100 000 m3 daily water capacity. A marine laboratory provides analytical services. -",,"Biodiversity, stoichiometry, benthic ecology, plankton ecology, seagrass ecology, ice studies, reproductive evolution in fishes -"," +",2027 - present,,"Temperature, light, pH, pCO2, nutrient levels, community composition, turbidity +",," @@ -698,24 +625,27 @@ SYKE-MRC field mesocosm work at Tvärminne -","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}" -test 14,"[TEST CASE] Abstract: only ""Equipment"" data available",University of Helsinki,Finland,Europe,"University of Helsinki +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",,, +test 16,"[TEST CASE] Abstract: only ""Primary interests"" data available",University of Helsinki,Finland,Europe,"University of Helsinki P.O. Box 3 00014 University of Helsinki Finland ","Director: Marko Reinikainen Research Coordinator: Joanna Norkko Please login or request access to view contact information.,Please login or request access to view contact information. -",2026 - present,,,"Biodiversity, stoichiometry, benthic ecology, plankton ecology, seagrass ecology, ice studies, reproductive evolution in fishes -"," +",2027 - present,,,," 59.8431619,23.2440297 -",,,"Wet labs, outdoor aquarium facility, climatic chambers, bio-optical instrumentation (spectrophotometry, spectrofluorometry), masspectrometry, carbon analyzers, microscopes with digital imaging, isotope lab, chemistry lab, CTD, meters for light, turbidity and oxygen, field sampling equipment, research vessels, hovercraft -","Dormitories with ca 100 beds, full board, self-service kitchens, sea-side sauna +"," +Invasive species +eutrophication +climate change + +",,,"Dormitories with ca 100 beds, full board, self-service kitchens, sea-side sauna ","http://www.finmari-infrastructure.fi/field-stations/tvarminne-uhel/ "," @@ -731,16 +661,17 @@ SYKE-MRC field mesocosm work at Tvärminne -","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}" -test 15,"[TEST CASE] Abstract: only ""Controlled Parameters"" data available",University of Helsinki,Finland,Europe,"University of Helsinki +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",,, +test 17,"[TEST CASE] Abstract: only ""Research topics"" data available",University of Helsinki,Finland,Europe,"University of Helsinki P.O. Box 3 00014 University of Helsinki Finland ","Director: Marko Reinikainen Research Coordinator: Joanna Norkko Please login or request access to view contact information.,Please login or request access to view contact information. -",2027 - present,,"Temperature, light, pH, pCO2, nutrient levels, community composition, turbidity -","Biodiversity, stoichiometry, benthic ecology, plankton ecology, seagrass ecology, ice studies, reproductive evolution in fishes +",2027 - present,,,"Environmental fate of pollutants (e.g. sorption transient storage and longitudinal dispersion) +Assessment of adverse effects of pollutants on macroinvertebrates following pulse exposures +Evaluation and establishment of aquatic-terrestrial model ecosystems to assess aquatic insect emergence-related pollutant transfer or effect translation from aquatic to adjacent terrestrial systems "," @@ -764,4 +695,4 @@ SYKE-MRC field mesocosm work at Tvärminne -","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}" \ No newline at end of file +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",,, \ No newline at end of file From 14406ee8e223b267fb4a527360a8cdcb75a0c7e3 Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 13 Oct 2025 16:18:02 +0200 Subject: [PATCH 066/149] feat: handling new lines in abstract columns --- server/workers/common/common/aquanavi/mapping.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/server/workers/common/common/aquanavi/mapping.py b/server/workers/common/common/aquanavi/mapping.py index c95fa76ff..d1f13fbd1 100644 --- a/server/workers/common/common/aquanavi/mapping.py +++ b/server/workers/common/common/aquanavi/mapping.py @@ -160,28 +160,33 @@ def get_not_available_message_and_increase_counter(name): count_of_not_available_parts += 1 return f"{name}: description not available" + def get_and_process_value(row, column_name): + value = process_string_column(row, column_name) + value_without_trailing_dot = remove_trailing_dot(value) + return value_without_trailing_dot + if (row[COLUMNS['description']]): - abstract_parts.append(f"Facility description: {remove_trailing_dot(str(row[COLUMNS['description']]).strip())}") + abstract_parts.append(f"Facility description: {get_and_process_value(row, COLUMNS['description'])}") else: abstract_parts.append(get_not_available_message_and_increase_counter("Facility description")) if (row[COLUMNS['equipment']]): - abstract_parts.append(f"Equipment: {remove_trailing_dot(str(row[COLUMNS['equipment']]).strip())}") + abstract_parts.append(f"Equipment: {get_and_process_value(row, COLUMNS['equipment'])}") else: abstract_parts.append(get_not_available_message_and_increase_counter('Equipment')) if (row[COLUMNS['controlled_parameters']]): - abstract_parts.append(f"Controlled parameters: {remove_trailing_dot(str(row[COLUMNS['controlled_parameters']]).strip())}") + abstract_parts.append(f"Controlled parameters: {get_and_process_value(row, COLUMNS['controlled_parameters'])}") else: abstract_parts.append(get_not_available_message_and_increase_counter('Controlled Parameters')) if (row[COLUMNS['primary_interests']]): - abstract_parts.append(f"Primary interests: {remove_trailing_dot(str(row[COLUMNS['primary_interests']]).strip())}") + abstract_parts.append(f"Primary interests: {get_and_process_value(row, COLUMNS['primary_interests'])}") else: abstract_parts.append(get_not_available_message_and_increase_counter('Primary interests')) if (row[COLUMNS['research_topics']]): - abstract_parts.append(f"Research topics: {remove_trailing_dot(str(row[COLUMNS['research_topics']]).strip())}") + abstract_parts.append(f"Research topics: {get_and_process_value(row, COLUMNS['research_topics'])}") else: abstract_parts.append(get_not_available_message_and_increase_counter('Research topics')) From 10899571e78dc54c3a1aa6962d104327c075edc0 Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 13 Oct 2025 16:37:47 +0200 Subject: [PATCH 067/149] refactor: keywords retrieval --- .../workers/common/common/aquanavi/mapping.py | 60 +++++++++++++------ 1 file changed, 43 insertions(+), 17 deletions(-) diff --git a/server/workers/common/common/aquanavi/mapping.py b/server/workers/common/common/aquanavi/mapping.py index d1f13fbd1..67cbe8cb2 100644 --- a/server/workers/common/common/aquanavi/mapping.py +++ b/server/workers/common/common/aquanavi/mapping.py @@ -25,19 +25,19 @@ "photos_of_experiments": "Photos of experiments/installations images", } -def process_string_column(row, name): +def process_string_column(row, column_name): """ Process the column name from DataFrame. Args: row (pandas.Series): String DataFrame. - name (str): Name of a column that must be processed. + column_name (str): Name of a column that must be processed. Returns: str: The processed string (parts separated by commas, or the original string), or an empty string if the original value was empty. """ - value = row[name] + value = row[column_name] if value: processed_string = str(value).strip() @@ -51,10 +51,35 @@ def process_string_column(row, name): return "" def remove_trailing_dot(string): + """ + Remove the dot from the end of the string (if it is existing the string). + + Args: + string (str): String with/without dot at the end. + + Returns: + str: String without dot at the end. + """ if string and string.endswith('.'): return string[:-1] return string +def get_and_process_value(row, column_name): + """ + The function returns a value from a column with line breaks handling, + as well as removing the dot from the end of the value (string). + + Args: + row (str): String DataFrame. + column_name (str): Name of a column that must be processed. + + Returns: + str: String with value without dot at the end. + """ + value = process_string_column(row, column_name) + value_without_trailing_dot = remove_trailing_dot(value) + return value_without_trailing_dot + def get_latitude_longitude(row): coordinates_string = str(row[COLUMNS['location']]).strip() @@ -160,11 +185,6 @@ def get_not_available_message_and_increase_counter(name): count_of_not_available_parts += 1 return f"{name}: description not available" - def get_and_process_value(row, column_name): - value = process_string_column(row, column_name) - value_without_trailing_dot = remove_trailing_dot(value) - return value_without_trailing_dot - if (row[COLUMNS['description']]): abstract_parts.append(f"Facility description: {get_and_process_value(row, COLUMNS['description'])}") else: @@ -196,17 +216,23 @@ def get_and_process_value(row, column_name): return "; ".join(abstract_parts) + '.' def get_keywords(row): - keywords_parts = [] + """ + Creates the keywords field for each data entry. The keywords field contains + string value with data from the Specialist Areas column. If column does not contains information, + an empty string is returned. - # Adding the "Specialist areas" - specialist_areas = process_string_column(row, "Specialist areas") - specialist_areas_without_trailing_dot = remove_trailing_dot(specialist_areas) - if specialist_areas_without_trailing_dot: - keywords_parts.append(specialist_areas_without_trailing_dot) - else: - keywords_parts.append("not available") + Args: + row (pandas.Series): String DataFrame. + + Returns: + str: String with keywords. + """ + specialist_areas = get_and_process_value(row, COLUMNS['specialist_areas']) + + if specialist_areas: + return specialist_areas + '.' - return "; ".join(keywords_parts) + return "" def get_id(row): """ From b562192d5d864d1a54f7a5aab692c27647d4bf28 Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 13 Oct 2025 17:15:08 +0200 Subject: [PATCH 068/149] feat: test csv file with sample data and test cases --- .../workers/common/common/aquanavi/mapping.py | 1 + .../mesocosm_data_cleaned_with_test_cases.csv | 5211 ++++++++++++++++- .../mesocosm_data_with_test_cases.csv | 698 +++ 3 files changed, 5789 insertions(+), 121 deletions(-) create mode 100644 server/workers/common/common/aquanavi/mesocosm_data_with_test_cases.csv diff --git a/server/workers/common/common/aquanavi/mapping.py b/server/workers/common/common/aquanavi/mapping.py index 67cbe8cb2..f4a3f9932 100644 --- a/server/workers/common/common/aquanavi/mapping.py +++ b/server/workers/common/common/aquanavi/mapping.py @@ -7,6 +7,7 @@ CSV_PATH = "common/common/aquanavi/mesocosm_data_cleaned.csv" CSV_PATH_WITH_TEST_DATA = "common/common/aquanavi/mesocosm_data_cleaned_with_test_cases.csv" +CSV_PATH_TEST_DATA = "common/common/aquanavi/mesocosm_data_with_test_cases.csv" DEFAULT_DOCUMENT_TYPE = "physical object" DEFAULT_RESULT_TYPE = ['Other/Unknown material'] COLUMNS = { diff --git a/server/workers/common/common/aquanavi/mesocosm_data_cleaned_with_test_cases.csv b/server/workers/common/common/aquanavi/mesocosm_data_cleaned_with_test_cases.csv index 5cdcfe3d9..998021027 100644 --- a/server/workers/common/common/aquanavi/mesocosm_data_cleaned_with_test_cases.csv +++ b/server/workers/common/common/aquanavi/mesocosm_data_cleaned_with_test_cases.csv @@ -1,4 +1,4 @@ -url,Name,Legal name of organisation,Country,Continent,Organisation address,Primary contact information (PI),Years of Mesocosm Experiments,Description of Facility,Controlled Parameters,Research Topics,Facility location(s),Primary interests,Specialist areas,Equipment,Lodging,Source of Information,Photos of experiments/installations,Photos of experiments/installations images,Equipment images,Lodging images,Manipulations,Facility location(s) split,location_facilities,,, +url,Name,Legal name of organisation,Country,Continent,Organisation address,Primary contact information (PI),Years of Mesocosm Experiments,Description of Facility,Controlled Parameters,Research Topics,Facility location(s),Primary interests,Specialist areas,Equipment,Lodging,Source of Information,Photos of experiments/installations,Photos of experiments/installations images,Equipment images,Lodging images,Manipulations,Facility location(s) split,location_facilities,, https://mesocosm.org/mesocosm/sites-aquanet-skogaryd-research-station/,SITES AquaNet – Skogaryd Research Station,SITES and Göteborg University,Sweden,Europe,"Göteborg University Inst. for Geosciences Guldhedsgatan 5a @@ -40,7 +40,7 @@ Photo credit: Leif Klemedtsson   -","['http://mesocosm.org/wp-content/uploads/2018/05/Skogaryd_2-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Skogaryd_1-1024x683.jpg']",,,,"['58.3712', ' 12.1613']","{'coordinates': ['58.3712', '12.1613']}",,, +","['http://mesocosm.org/wp-content/uploads/2018/05/Skogaryd_2-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Skogaryd_1-1024x683.jpg']",,,,"['58.3712', ' 12.1613']","{'coordinates': ['58.3712', '12.1613']}",, https://mesocosm.org/mesocosm/university-koblenz-landau/,Landau Stream Mesocosm Facility (LSMF),University Koblenz-Landau,Germany,Europe,"University Koblenz-Landau Fortstraße 7 76829 Landau @@ -89,7 +89,7 @@ Stream mesocosm facility at the Landau Campus -","['http://mesocosm.org/wp-content/uploads/2017/05/Stream-Mesocosms-Landau_400px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Fliessrinnenanlage_400.jpg']",,,,"['49.20269', '8.106179999999995']","{'coordinates': ['49.20269', '8.106179999999995']}",,, +","['http://mesocosm.org/wp-content/uploads/2017/05/Stream-Mesocosms-Landau_400px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Fliessrinnenanlage_400.jpg']",,,,"['49.20269', '8.106179999999995']","{'coordinates': ['49.20269', '8.106179999999995']}",, https://mesocosm.org/mesocosm/sites-aquanet-erken-laboratory/,SITES AquaNet-Erken Laboratory,Uppsala University,Sweden,Europe,"Uppsala University: P.O. Box 256 SE-751 05 Uppsala @@ -134,7 +134,7 @@ Photo credit: Erik Sahlee -","['http://mesocosm.org/wp-content/uploads/2018/05/Erken_2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Erken_1-1024x705.jpg']",,,,"['59.8354205', ' 18.6327766']","{'coordinates': ['59.8354205', '18.6327766']}",,, +","['http://mesocosm.org/wp-content/uploads/2018/05/Erken_2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Erken_1-1024x705.jpg']",,,,"['59.8354205', ' 18.6327766']","{'coordinates': ['59.8354205', '18.6327766']}",, https://mesocosm.org/mesocosm/resources-garden-of-aquatic-plant/,Resources garden of aquatic plant,"Wuhan Botanical Garden, Chinese Academy of Sciences",China,Asia,"Lumo Road #1, Wuhan, China ","(+86)13297957139 Please login or request access to view contact information. @@ -174,7 +174,7 @@ Tanks with different macrophytes and water depth -","['http://mesocosm.org/wp-content/uploads/2019/03/The-green-house-and-the-heating-control-system-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Outdoor-tanks-with-different-size-and-area-300x225.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Tanks-with-different-macrophytes-and-water-depth-300x225.jpeg']",,,,"['30.54694', '114.41972']","{'coordinates': ['30.54694', '114.41972']}",,, +","['http://mesocosm.org/wp-content/uploads/2019/03/The-green-house-and-the-heating-control-system-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Outdoor-tanks-with-different-size-and-area-300x225.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Tanks-with-different-macrophytes-and-water-depth-300x225.jpeg']",,,,"['30.54694', '114.41972']","{'coordinates': ['30.54694', '114.41972']}",, https://mesocosm.org/mesocosm/large-experimental-array-of-ponds-leap/,Large Experimental Array of Ponds (LEAP),McGill University,Canada,North America,"McGill Department of Biology Stewart Biology Bldg 1205 Dr Penfield Ave @@ -232,104 +232,4986 @@ Depth and multiparameter probe (YSI) physico-chemical measurements.  Photo cred -","['http://mesocosm.org/wp-content/uploads/2019/04/3-1024x769.png', 'http://mesocosm.org/wp-content/uploads/2019/04/2-1024x368.png', 'http://mesocosm.org/wp-content/uploads/2019/04/1.png']",,,,"['45.5368', ' -73.1578']","{'coordinates': ['45.5368', '-73.1578']}",,, -https://mesocosm.org/mesocosm/cmu-biological-station-mesocosm-facility/,[TEST CASE] Identifier: same with some other mesocosm; Location: different from some other mesocosm,"Eawag, Swiss Federal Institute of Aquatic Science and Technology",Switzerland,Europe,"Eawag, Überlandstrasse 133, 8600 Dübendorf, Switzerland +","['http://mesocosm.org/wp-content/uploads/2019/04/3-1024x769.png', 'http://mesocosm.org/wp-content/uploads/2019/04/2-1024x368.png', 'http://mesocosm.org/wp-content/uploads/2019/04/1.png']",,,,"['45.5368', ' -73.1578']","{'coordinates': ['45.5368', '-73.1578']}",, +https://mesocosm.org/mesocosm/tva%cc%88rminne-mesocosm-facility-tmf/,Tvärminne Mesocosm Facility (TMF),University of Helsinki,Finland,Europe,"University of Helsinki + P.O. Box 3 + 00014 University of Helsinki + Finland +","Director: Marko Reinikainen + Research Coordinator: Joanna Norkko +Please login or request access to view contact information.,Please login or request access to view contact information. +",Established 1902; Large field mesocosms run periodically since 1988,"pelagic – marine – outdoor + A large nature reserve surrounding TZS is dedicated to research, providing access to a pristine environment for field mesocosms. Research vessels and technical services support sampling and maintenance; a hovercraft allows winter-studies. Aquarium facilities with natural or artificial light are available for flow-through experiments at up to 100 000 m3 daily water capacity. A marine laboratory provides analytical services. +","Temperature, light, pH, pCO2, nutrient levels, community composition, turbidity +","Biodiversity, stoichiometry, benthic ecology, plankton ecology, seagrass ecology, ice studies, reproductive evolution in fishes +"," + + + + + 59.8431619,23.2440297 + +",,,"Wet labs, outdoor aquarium facility, climatic chambers, bio-optical instrumentation (spectrophotometry, spectrofluorometry), masspectrometry, carbon analyzers, microscopes with digital imaging, isotope lab, chemistry lab, CTD, meters for light, turbidity and oxygen, field sampling equipment, research vessels, hovercraft +","Dormitories with ca 100 beds, full board, self-service kitchens, sea-side sauna +","http://www.finmari-infrastructure.fi/field-stations/tvarminne-uhel/ +"," + + + +Pristine nature reserve for experimental set-ups + + + + +SYKE-MRC field mesocosm work at Tvärminne + + + + +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",, +https://mesocosm.org/mesocosm/cretacosmos/,CRETACOSMOS,Hellenic Centre for Marine Research (HCMR),Greece,Europe,"Institute of Oceanography + Ex American Base Gournes + 71003 Heraklion, Crete + Greece +","Dr. Paraskevi Pitta +Please login or request access to view contact information. +",2009 to present,"outdoor – pelagic/benthic – marin + 12 polyethylene mesocosm-bags up to 5 m3 (1.32 m diameter) incubated in two large volume concrete tanks (one with volume 150 m³ and 3 m depth and a second one with volume 350 m³ and 5 m depth) + 9 benthocosms combining water column (1.5 m3, 4 m deep, 0.64 m diameter) and sediment (85 L) in the same polyethylene mesocosm-bag + The smaller (150 m³) tank is equipped by a sophisticated, fully-automated heating/cooling water system with electric valves, resistances and temperature sensors that allow water heating/cooling and temperature control at ±0.5 ºC of targeted temperature +","Temperature, light, nutrients +","Response of the ultra-oligotrophic food web of the Eastern Mediterranean to perturbations, climate change scenarios (simultaneous effect of warming & acidification), impact of aerosol input, effect of silver nanoparticles, benthic-pelagic coupling at benthocosms, hypoxia +"," + + + + + 35.3387352,25.14421260 + +",,,"chemical lab, radio-isotope lab (14C, 33P, 3H), flow cytometry lab, microscopy lab (inverted and epifluorescence microscopes, image analysis system), culture/live laboratory, constant temperature room and several general use labs, 26m long research vessel PHILIA, zodiac +","no dormitories, accomodation in hotels +","www.cretacosmos.eu +"," + + + +Cretacosmos facility during the LightDynaMix project (Photo: Stella A Berger) + + + + +Two basins of the Cretacosmos mesocosm facility (Photo: Vivi Pitta) + + + + +Cretacosmos mesocosm facility (Photo: Vivi Pitta) + + + + +  +","['http://mesocosm.org/wp-content/uploads/2017/02/Cretacosmos-facility-during-the-LightDynaMix-project-Photo-Stella-A-Berger-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Two-basins-of-the-Cretacosmos-mesocosm-facility-300x188.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Cretacosmos-mesocosm-facility-Photo-Vivi-Pitta-300x113.jpg']",,,,"['35.3387352', '25.14421260']","{'coordinates': ['35.3387352', '25.14421260']}",, +https://mesocosm.org/mesocosm/eawag-experimental-ponds-facility/,Eawag Experimental Ponds Facility,"Eawag, Swiss Federal Institute of Aquatic Science and Technology",Switzerland,Europe,"Eawag, Überlandstrasse 133, 8600 Dübendorf, Switzerland ","Christoph Vorburger Head of Experimental Ponds Committee Please login or request access to view contact information. -",2016 – present,"The Experimental Ponds Facility at Eawag in Dübendorf consists of 36 independent ponds made of glass fiber reinforced plastic. The ponds are 1.5 m deep with a shallow end to one side (0.5 m), and they hold up to 15 m3 of fresh water. The ponds can be drained and reset completely between experiments. -","Depending on ongoing experiments: -1. Nutrient loading (phosphorus) -2. Presence/absence of macrophytes -3. Presence/absence of filter feeders (mussels) -4. Ecotypes of added fish -","Ecosystem resilience -Eco-evolutionary dynamics -Ecosystem effects of environmental stressors -Ecoosystem effects of evaporation control +",2016 – present,"The Experimental Ponds Facility at Eawag in Dübendorf consists of 36 independent ponds made of glass fiber reinforced plastic. The ponds are 1.5 m deep with a shallow end to one side (0.5 m), and they hold up to 15 m3 of fresh water. The ponds can be drained and reset completely between experiments. +","Depending on ongoing experiments: +1. Nutrient loading (phosphorus) +2. Presence/absence of macrophytes +3. Presence/absence of filter feeders (mussels) +4. Ecotypes of added fish +","Ecosystem resilience +Eco-evolutionary dynamics +Ecosystem effects of environmental stressors +Ecoosystem effects of evaporation control +"," + + + + + 47.40515,8.60855 + +",,,"Indoor laboratories for sample processing +Sampling bridges for easy access to water column +Sampling equipment for phyto- and zooplankton +Exo2 Multiparameter Sonds for automated measurement of water quality parameters +","Hotels and Eawag guest house nearby +","https://www.eawag.ch/de/ueberuns/arbeiten-an-der-eawag/forschungsumfeld/versuchsteichanlage/ +"," + + + +Image 1: Eawag’s Experimental Pond Facility in Dübendorf, Switzerland. Picture taken in summer 2016, shortly after the construction of the facility. Photo credit: Christoph Vorburger + + + + +Image 2: Schematic cross-section of an experimental pond. Image credit: Eawag + + + + +Image 3: Scientists taking samples at Eawag’s Experimental Pond Facility in Dübendorf, Switzerland. Photo credit: Eawag + + + + +","['http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-1-300x186.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-2-300x156.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-3-300x174.jpg']",,,,"['47.40515', '8.60855']","{'coordinates': ['47.40515', '8.60855']}",, +https://mesocosm.org/mesocosm/lippenbroek-experimental-wetland/,Lippenbroek Experimental Wetland,University of Antwerp,Belgium,Europe,"University of Antwerp + Dep. Biology + Universiteitsplein 1 + 2610 Wilrijk +","Patrick Meire +Please login or request access to view contact information. +",2007 - present,"outdoor – freshwater – benthic/pelagic + Lippenbroek Experimental Wetland is a freshwater CRT (controlled reduced tide) in natura tidal facility, surface 8 ha, formerly used as cropland. Vegetation has been progressively replaced by flood-tolerant species (e.g. Lythrum salicaria, Lycopus europaeus, Salix sp., Typha angustifolia and Phragmites australis). Reconstruction of spring-neap tide flooding variation required the construction of separate inlet and outlet culvert. + Lippenbroek Experimental Wetland is currently well equipped to study water and sediment balances. ADCP discharge sensors and automated sampling equipment at in- and outlet culverts allows for the detailed measurement of in- and outgoing water fluxes and quantification of the water and sediment balance. Ten sampling sites are installed with sediment elevation tables and piezometers. The flexible dimensions of the culverts allow the manipulation of the volume of incoming and outgoing tidal waters and hence manipulate tidal height, inundation frequency and inundation duration. +","Inundation frequency, vegetation, soil nutrients +","Lippenbroek Experimental Wetland is currently the only facility that allows in situ manipulation of various tidal characteristics in such detail and large scale. Multiple sampling sites across the area have been identified, with different elevations, allowing to assess at the sampling spot scale (12 m2) the effect of different flooding frequencies and duration, due to the differences in elevation. +"," + + + + + 51.09284,4.157230 + +",,,"Only one general tidal regime can be installed for the whole area, although a good definition of sampling spots within Lippenbroek (based on the digital elevation map) allows for assessing effects of specific flooding regimes locally in more detail. + The future upgrades include 16 flexible gas exchange measurement setups (CO2, N2O, CH4) fluxes, allowing, a whole ecosystem tower for eddy covariance fluxes of CO2, H2O and CH4, permanent water quaity setups for all major nutrients that can be flexibly deployed, and upgrade of the facilities for flow measurement. +","Lodging possible at University of Antwerp (25 km) or near facility in private accommodation +","www.lippenbroek.be +"," + + + + +Map of Lippenbroek Experimental Weltland + + + + + +Areal view of Lippenbroek Experimental Wetland + + + + + +Construction plan of Lippenbroek Experimental Wetland + + + + + + + + +Lippenbroek Experimental Wetland + + + + + + + + +","['http://mesocosm.org/wp-content/uploads/2017/05/Lippenbroek_5.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lippenbroek_1_314px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lippenbroek_3_400px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lippenbroek_2_400px.jpg']",,,,"['51.09284', '4.157230']","{'coordinates': ['51.09284', '4.157230']}",, +https://mesocosm.org/mesocosm/cmu-biological-station-mesocosm-facility/,CMU Biological Station mesocosm facility,"CMU Biological Station, Central Michigan University",USA,North America,"P.O. Box 206, +Beaver Island, +MI 49782 +USA +","Don Uzarski +Please login or request access to view contact information. +",2012 - present," +12 fibreglass tanks each 250 gallons +including metal halide +timer-controlled lights +housed on Lake Michigan with access to epilimnetic and metalimnetic water + +"," +Light +Temperature + +"," +Predator-prey interactions +microplastic impacts +sediment contaminants +macrophyte-phytoplankton interactions +fish behavior +nutrient impacts + +"," + + + + + 45.7422222,-85.50944444444444 + +"," +Invasive species +eutrophication +climate change + +","Laurentian Great Lakes +","YSI multiprobes +","on site +","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx +","photo credits: CMU Communications +",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}",, +https://mesocosm.org/mesocosm/ims-metu-mesocosm-system/,IMS-METU Mesocosm System,"Middle East Technical University (METU), Institute of Marine Sciences (IMS)",Turkey,Europe,"Middle East Technical University, Institute of Marine Sciences, +33731, Erdemli, +Mersin, +Turkey +","Dr. Korhan Özkan +Please login or request access to view contact information. +",2021 - present,"IMS-METU mesocosm facility consists of 24 outdoor mesocosms and for stocking tanks mimicking shallow lake or coastal ecosystems. The system allows 3×2 factorial design experiments Each tank is made of polyethylene with a diameter of 2 m and depth of 1.8 m and insulated. Tanks are equipped with dynamic heating systems that can simulate climate change scenarios. Each tank is equipped with real-time sensors for temperature, oxygen, methane, carbon dioxide monitoring. The water column can be mixed with wave makers. Currently each tank has 0.3 m natural lake sediment and 1.2 m of water column and inoculated with natural communities (plankton to fish) from Anatolian coastal and inland Lakes. The facility involves a nearby field laboratory and storage facilities hosting all sampling equipment and basic analysis capacity. +Detailed information is available at the publication: +Özkan, K., Korkmaz, M., Amorim, C. A., Yılmaz, G., Koru, M., Can, Y., … & Jeppesen, E. (2023). Mesocosm Design and Implementation of Two Synchronized Case Study Experiments to Determine the Impacts of Salinization and Climate Change on the Structure and Functioning of Shallow Lakes. Water, 15(14), 2611. +"," +Temperature +mixing +nutrient levels +salinity +species composition if required. + +"," +Climate change effects on ecosystems +extreme events +salinisation +ecosystem ecology + +"," + + + + + 36.564427, 34.254018 + +"," +Ecology of inland and coastal lakes as well as coastal seas + +"," +Aquatic ecology +ecosystem ecology +community ecology +climate change +plankton + +"," +All tanks were equipped with temperature, oxygen, methane and CO2 sensors. +There is a nearby field lab for basic wet-lab requirements such as filtration, alkalinity, Chl-a measurements. +The site includes storage facility for all sampling and maintenance gears. +The institute laboratories are 200 m away and hosting a large analyses capacity (nutrient auto-analyzers, HPLC, ICP-MS, Ion Chromatography, CHN analyzer, TOC-TN analyzer, microscope labs) + +","Lodging may be provided on campus for visiting students and researchers. +","https://ae-ims.metu.edu.tr/ +","The facility includes 24 experimental mesocosm tanks, photo credits: Korhan Özkan +Aerial view of mesocosm system and nearby field laboratory, photo credit: Korhan Özkan +Mesocosm tanks are innoculated with biotic communities, photo credits: Korhan Özkan +Mesocosm tanks are equipped with sensors including GHG measurements, photo credits:Korhan Özkan +Dedicated field laboratory and facilities, photo credits: Korhan Özkan +  +  +","['http://mesocosm.org/wp-content/uploads/2023/12/G0018552_1.9MB-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/WhatsApp-Image-2022-07-27-at-10.33.44-AM-1-1024x576.jpeg', 'http://mesocosm.org/wp-content/uploads/2023/12/G0011377_1.8MB-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/IMG_9936_1.9MB-768x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/G0066411_1.9MB-1024x768.jpg']",,,,"['36.564427', ' 34.254018']","{'coordinates': ['36.564427', '34.254018']}",, +https://mesocosm.org/mesocosm/bermuda-marine-mesocosm-facility-bmmf/,Bermuda Marine Mesocosm Facility (BMMF),ASU Bermuda Institute of Ocean Sciences (ASU BIOS),Bermuda,North America,"17 Biological Station, St. George’s GE01, Bermuda +","Dr. Yvonne Sawall +Please login or request access to view contact information. +",since 2019,"The Bermuda Marine Mesocosm Facility (BMMF) is a robust and versatile state-of-the-art outdoor facility for experimental work and organism culturing. +The BMMF provides scientists with an opportunity to conduct research in controlled marine environments under near-natural conditions, meaning natural sun light and seawater that is pumped from the close-by Reach. It has twelve 500-L and four 1500-L experimental basins that can be run simultaneously and are designed with the potential to manipulate a range of environmental factors, such as temperature, light, CO2 concentrations, flow rate, and nutrients. The BMMF provides for a replicated and robust experimental design that is ideal for research on a variety of topics, including, for example, organism eco-physiology and reproduction, biological recovery and ecosystem resilience. +"," +Temperature, light +CO2 +seawater flow-through +filtered/unfiltered seawater + +"," +Effects of ocean warming (marine heat waves) on organisms and communities +Effect of ocean acidification on organisms and communities +Effect of nutrient enrichment on organisms and communities +Effect of hypoxia on organisms and communities +Reproductive biology of, for example, corals and seagrass +Efficacy and effects of marine Carbon Dioxide Removal (mCDR) technologies + +"," + + + + + 32.370636,-64.697763 + +"," +Manipulation experiments under near-natural conditions + +",,"Basins: + +12 x 500-L basins +4 x 1500-L basins – elongated, can be converted into flumes + +  +Light intensity control: + +Roof: Scaffolding holding a waterproof & light permeable (~75%) greenhouse foil +Lids for each basin with exchangeable shading material (e.g., mosquito netting) for further light reduction + +  +Temperature control + +12 x AquaLogic DSHP-9 Heat Pumps, one for each 500-L basin +4 x AquaLogic HS-2 Heat Pumps, one for each 1500-L basin + +  +CO2 supply and pH monitoring + +CO2 supply regulated by mass-flow controllers and directly bubbled into 3 x 200-L flow-through header tanks; flow to individual basins is adjustable +Automated pH measurements in all basins via a centralized pH sensor (DURAFET III, Honeywell Process solution) and remote-controlled pumps. + +  +Water supply and flow + +Total capacity of seawater supply from Reach: 9,000 L/h +2 x 5,500-L header tanks for seawater storage +Sediment filter + +  +Aquarium setup + +30 x 60-L aquaria to be placed inside basins + +  +Electricity + +2 – 4 power outlets (110V) above each basin + +  +Laboratory container + +20-foot shipping container converted into an air-conditioned lab space with cabinets, bench space, various power outlets (110V) and a freshwater sink + +  +Utility golf cart For quick and easy transport of life organisms from the boat to the BMMF and for transport of equipment. +","Various visitor accommodations are available on campus: https://bios.asu.edu/visiting-bios +","https://bios.asu.edu/research/facilities/mesocosm-facility + +  +","Array of heat pumps that control the temperature in basins. They heat and chil depending on what is required, photo credits: Yvonne Sawall +Mesocosm overview showing ~3/4 of the facility; photo credits: Yvonne Sawall +One of the four 1500-L basins hosting coral fragments.; photo credits: Yvonne Sawall +Three 40-L aquaria inside a 500-L basin, each hosting coral fragments. ; photo credits: Chloe Carbonne +","['http://mesocosm.org/wp-content/uploads/2024/11/B31560D9-B8BA-4EA4-9665-B13B46E9372A-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/11/2009F839-BFBF-4D3A-885D-30A359409B74-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/11/6DC60F28-580A-4046-91C5-4C57088CE81F-768x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2024/11/2CCD8F84-538A-40A1-9507-74E4794C3B3A-1024x768.jpg']",,,,"['32.370636', '-64.697763']","{'coordinates': ['32.370636', '-64.697763']}",, +https://mesocosm.org/mesocosm/limnotrons/,Limnotron,Netherlands Institute for Ecology (NIOO-KNAW),The Netherlands,Europe,"Netherlands Institute for Ecology (NIOO) + Droevendaalsesteeg 10 + 6708 PB Wageningen +","L.N. de Senerpont Domis +Please login or request access to view contact information. +",2001 - present,"indoor/outdoor – pelagic – freshwater + Limnotrons, outdoor enclosure facility, 36 experimental ponds +  +The limnotrons are 9 stainless steel indoor mesocosms with a high level of control. The dimensions of these vessels are: 0.97 m in diameter, a depth between 1.32 m (side) and 1.37 m (centre), and a volume of 922 L. The vessels can be closed with a removable PMMA flange lid. In addition to the possibility to sample vertically with specifically designed integrated water samples, sampling can also be done by using the sampling ports positioned on three depths. If needed, mixing of the water column can take place by an impeller made of +PMMA, with a stainless steel axis, and a silicon rubber strip between the outside and the Limnotron wall to prevent wall growth. To create a different type of mixing more tailored to growth of cyanobacterial scums, oscillating grids have been designed. Originally designed to study pelagic communities, the Limnotrons have been adapted to allow for a benthic community as well. At present, each Limnotron can have a sediment layer of 10-15 cm, and with the recently purchased high intensity lights, a macrophyte community can be established in these mesocosms. +A unique feature of the limnotrons is the temperature regulation with separate upper and lower temperature blocks to allow for thermal stratification. A thermostatically regulated microprocessor-controlled cooling and heating installation controls the temperature of each of the vessels individually at 0.1 oC SE. The temperature program allows for running complicated temperature scenarios, including episodic events. Temperature is logged every minute.  Because of possible volume differences due to temperature settings, evaporation losses and sampling, a (refillable) expansion vessel was developed, which maintains a constant water volume in the experimental vessel. In addition, CO2 levels can be manipulated as well, by providing different CO2 /air mixtures with a WITT KM60-2ME gas mixer. +","Temperature, Light, Mixing regime, CO2 +","The Limnotrons can be used to test the effect of warming, eutrophication and CO2 elevation on carbon cycling, stoichiometry of different trophic groups, nutrient balances, metabolism, adaptation and microevolution and community structure of phytoplankton, zooplankton, macrofauna, periphyton and macrophytes. +"," + + + + + 51.9876442,5.6706486 + +",,,"Advanced analytical equipment, including a number of flow cytometers (e.g. flowcytometry, Cytobuoy, FlowCam, IRMS, molecular lab), which use laser technology to identify, count, and sort algae, bacteria, and protozoa at high speed. + +• Fluorescence microscopy +• Autoananalyzer for dissolved nutrients +• Multichannel probes for simultaneous measurements of oxygen, light, pH, conductivity and temperature +• Phytopam fluorometer +• Coulter particle counter +• Flowcytometer for analysis of phyto- and bacterioplankton (<90 micron) +• FLOWcam for automated analysis of larger celled phyto- and zooplankton +• Elemental analyser to measure particulate C and N +• IRMS to to measure the relative abundance of isotopes +• ICP-MS for detecting trace elements +• LC-MS/MS for detecting e.g. cyanotoxins +• GC-MS/MS for detecting volatiles + +•          State-of the art molecular lab +","No inhouse lodging available +","http://www.nioo.knaw.nl/en/node/280 +"," + + + + +Limnotron – a highly controlled experimental unit + + + + +","['http://mesocosm.org/wp-content/uploads/2017/02/Limnotron_400px2-300x214.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Limnotrons_400px1-268x300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/Limnotron-a-highly-controlled-experimental-unit-300x225.jpg']",,,,"['51.9876442', '5.6706486']","{'coordinates': ['51.9876442', '5.6706486']}",, +https://mesocosm.org/mesocosm/aqua-stress/,Aqua-stress,University of Canberra,Australia,Australia,"Institute for Applied Ecology, Faculty of Science and Technology +University of Canberra, Bruce, ACT, 2617, Australia +","Jon Bray +Please login or request access to view contact information. +Ben Kefford +Please login or request access to view contact information. +",2016 to present,"The system consists of 32 independent circular freshwater mesocosms each of 1000 L capacity. They can be used either with flowing water i.e. a stream mesocosm (using a pump in each mesocosm to create the flow) or as a pond mesocosm (without the pump). The mesocosms are re-circulating (i.e. non-flow through). A float value ensures that any water lost through evaporation is replaced. +","Controlled parameters are experiment dependent. Experiments to date have manipulated: salinity, the proportions of major ions (i.e. the ions that make up salinity), nutrients (N and P), sedimentation, pesticide concentration and sources of biota. +",," + + + + + -35.23511, 149.086653 + +","Examination of multiple stressors in freshwaters. +","Effects of multiple physico-chemical stressors such as: salinity (major ions), pesticides nutrients and sediment. Role of biotic interactions in altering effects of chemicals. +","Consists of 32 fully independent mesocosms each of 1000 L capacity with mains electricity supply for an electric submersible pump (1400 L/hr). Each mesocosm is plumbed into dechlorinated Canberra tap water. +","Commercially available nearby. +","https://www.canberra.edu.au/research/institutes/iae +Bray, J. P., J. Reich, S. J. Nichols, G. Kon Kam King, R. Mac Nally, R. Thompson, A. O’Reilly-Nugent & B. J. Kefford, 2019. Biological interactions mediate context and species-specific sensitivities to salinity. Philosophical Transactions of the Royal Society of London B 374(1764): 20180020. doi: http://dx.doi.org/10.1098/rstb.2018.0020. +"," + + + +Credit: Jon Bray + + + + +Credit: Jon Bray + + + + +Credit: Alica Tschierschke + + + + +","['http://mesocosm.org/wp-content/uploads/2019/03/Aqua-stress-1-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Aqua-stress-2-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Aqua-stress-3-300x200.jpg']",,,,"['-35.23511', ' 149.086653']","{'coordinates': ['-35.23511', '149.086653']}",, +https://mesocosm.org/mesocosm/mesocosm-gmbh/,MESOCOSM GmbH,Institut für Gewaesserschutz,Germany,Europe,"Institut für Gewaesserschutz + Neu-Ulrichstein 5 + D-35315 Homberg (Ohm) +","Prof. Dr. Klaus Peter Ebke +Please login or request access to view contact information. +",,"outdoor – pelagic/benthic – freshwater +18 to 25 land-based microcosms/mesocosms +","toxins +","ecotoxicilogy, phytoplankton, macrozoobenthos, emerging insects, plankton, macrophytes, periphyton +"," + + + + + 50.7527558,9.0331164 + +",,,"Analysis of physical-chemical parameters e.g. temperature, pH, conductivity, dissolved oxygen, water hardness, ammonium, nitrate and phosphate + Especially designed traps and equipment is used to monitor biological parameters like macrozoobenthos, emerging insects, plankton, macrophytes and periphyton by a well trained team to ensure consistent and appropriate sampling processes. + At MESOCOSM GmbH we can identify and count phytoplankton and periphyton via microscope, but also by using delayed fluorescence technique. This allows a close observation of the development of the algae community. +",,"http://www.mesocosm.de/Test-facility.74.0.html +"," + + + + +Mesocosm GmbH – schematic design of the test facility + + + + + +Mesocosm test basins + + + + +","['http://mesocosm.org/wp-content/uploads/2017/05/test-facility-mesocosmGmbH.de_.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/mesocosmGmbH.de_.jpg']",,,,"['50.7527558', '9.0331164']","{'coordinates': ['50.7527558', '9.0331164']}",, +https://mesocosm.org/mesocosm/pohang-mesocosm-system/,Pohang Mesocosm System,Pohang University of Science and Technology,South Korea,Asia,"Pohang University of Science and Technology + 77 CHEONGAM-RO.NAM-GU. + POHANG.GYUNGBUK. + KOREA +","Prof. Kitack Lee +Please login or request access to view contact information. +",,"outdoor – pelagic – marine + The facility consists of a floating raft, nine impermeable enclosures with transparent caps, nine pCO2 regulation units, and nine bubble-mediated seawater mixers +","CO2, pH, nutrients +","Ocean acidification +"," + + + + + 34.886946,128.623892 + +",,,,,"http://climate.postech.ac.kr/board/view.do?iboardgroupseq=4&iboardmanagerseq=12 +",,,,,,"['34.886946', '128.623892']","{'coordinates': ['34.886946', '128.623892']}",, +https://mesocosm.org/mesocosm/national-experimental-platform-in-aquatic-ecology-planaqua/,National Experimental Platform in Aquatic Ecology (PLANAQUA),,France,Europe,"Ecole Normale Supérieure (ENS) + National Centre of Scientific Research (CNRS) + Université Pierre et Marie Curie (UPMC) + Université Paris Sud (UPS) +","Gerard Lacroix +Please login or request access to view contact information. +",2012 - present,"outdoor/indoor- pelagic /littoral – freshwater/marin + 1) The Experimental Lake Platform consists of 16 artificial lakes (30 m x 15 m x 3 m deep, 800 m3each) conceived for incorporating the natural complexity of the environment and the spatially heterogeneous nature of ecological processes in natural ecosystems. These large experimental systems are spatially structured, with shallow littoral areas, a central pelagic zone and a central benthic area, and may be interconnected by groups of 4 lakes through 10 m long dispersal channels. The artificial lakes will be equipped in Autumn 2014 with automated sensors and data loggers. + The two other artificial reservoirs (126 m x 15 m x 3 m deep, 4000 m3) are a stocking lake (south) used to homogenize water before distribution to experimental lakes or mesocosms and a drainage lake (north) that can collect and purify used water at the end of experiments. + 2) A large number of mesocosms, from a few hundreds of liters to a few tens of m3, high degree of replication; Floating mesocosms installed on the stocking lake; more than 60 tanks installed outdoors and equipped with devices for the experimental control of thermal gradients and water mixing;  beaters that generate waves, control of the physical structure of the water column. + 3) Microcosms from one to several litres of volume for continuous cultures experiments; climatic chambers of the Ecotron IleDeFrance (precise conditioning of the environment and the detailed monitoring of states and activities of organisms and ecosystems) to study marine or freshwater ecosystems (plankton, benthos, macrophytes) under highly controlled environmental conditions.  A series of dedicated sensors enables monitoring of gas exchange (O2 and CO2) between the air and the water in the experimental system. +","temperature, mixing, fish, nutrients, waves, irradiance, gas concentrations +","Effects of human disturbances on aquatic biodiversity, community structure and ecosystem functioning. Long-term study of the bottom-up and top-down control of the functioning of complex communities with heterogeneous spatial distributions, consequences of anthropogenic pressures on biodiversity, up to the species at the top of the food web. Studies of the link between physical constraints and the functioning of aquatic systems. +"," + + + + + 48.287979,2.6759703 + +",,,"Instruments and equipment available in the labs include flowcytometer, spectrophotometer, growth cabinets, laminar flow hood, fume hood, -20°C and -80°C freezers, autoclave, oven, liquid nitrogen, distilled and ultrapure water, microscopes, centrifuge, precision balances, algae culture facilities, FlowCAM, etc. Field equipment includes samplers, fixed sensors, multi-parameters probes, BBE fluorimetric probes, BBE benthotorch, small boats, etc. Some experiments with fish may also be conducted in a fish house. +","CEREEP – Ecotron Ile de France is able to host up to 30 sleeping guests (12 double rooms and a dormitory for students). In addition, through cooperation with the laboratories associated in the PLANAQUA project, the CEREEP – Ecotron Ile de France may favour collaboration with other laboratories in Ile-de-France and access to other facilities. +","http://www.foljuif.ens.fr +"," + + + +Graphic of the PLANAQUA facility + + + + + + +","['http://mesocosm.org/wp-content/uploads/2017/02/Saint-Pierre_PLANAQUA-300x206.png', 'http://mesocosm.org/wp-content/uploads/2017/02/Plamaqua_Mesocosms_8.14-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Bild1-225x300.jpg']",,,,"['48.287979', '2.6759703']","{'coordinates': ['48.287979', '2.6759703']}",, +https://mesocosm.org/mesocosm/cer-mesocosms/,CER Mesocosms,Centre for Ecological Research,Hungary,Europe,"Centre for Ecological Research +H-1113 Budapest, Karolina út 29. +Hungary +","Dr. Zsófia Horváth +Please login or request access to view contact information. +  +Dr. Csaba Vad +Please login or request access to view contact information. +",2019 - present,"Mobile outdoor facility, with 40 (300-litre each) + 96 mesocosms (220-litre each). +Heating is available on-site. +Possibility to carry out in situ experiments (within natural ponds or lakes). +"," +Temperature +nutrient level +species composition +connectivity + +"," +Plankton and benthic biodiversity +metacommunity ecology +trophic relationships +pond ecology +Role of stressors: climate change, invasive species, habitat fragmentation + +"," + + + + + 47.705993,19.229583 + +",,," +Temperature loggers and control +airlift +access to analytical and molecular labs + +","CER guest rooms +","https://ecolres.hu/en/home/ +https://metacomlab.com/ +"," + + + +  +CER mesocosms: land-based experiment (photo credit: Ádám Fierpasz) + + + + +CER mesocosms: in situ experiment (photo credit: Zsófia Horváth) + + + + +CER mesocosms: in situ experiment (photo credit: Zsófia Horváth) + + + + +","['http://mesocosm.org/wp-content/uploads/2023/07/DJI_0203-fotor-20230722131035-1024x637.jpg', 'http://mesocosm.org/wp-content/uploads/2021/05/3.m-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2021/05/4.m-1024x682.jpg']",,,,"['47.705993', '19.229583']","{'coordinates': ['47.705993', '19.229583']}",, +https://mesocosm.org/mesocosm/consortium-gwrc-mesocosm-facility/,Great Waters Research Consortium (GWRC) mesocosm facility,"Natural Resources Research Great Waters Research Institute (NRRI), University of Minnesota Duluth; Lake Superior Research Institute (LSRI), University of Wisconsin Superior (joint project)",USA,North America,"Montreal Pier Rd, +Superior, WI 54880 +USA +","Euan Reavie (NRRI) +Please login or request access to view contact information. +",2016 - present," +22 x 1m3, 40 x 20L +Closed system, recirculating +Indoor +Fluorescent lighting, timed +Duluth-Superior Harbor water source, filled simultaneously +Permitted for invasives + +"," +Temperature +light +species added + +","Invasion dynamics +"," + + + + + 46.7109,-92.0484 + +","Invasive species +",,,"not on site +","https://www.uwsuper.edu/lsri/gwrc/index.cfm +"," + + + +Photo credits: Euan D. Reavie + + + + +Photo credits: Euan D. Reavie + + + + +Figure credits: Euan D. Reavie + + + + +","['http://mesocosm.org/wp-content/uploads/2022/09/pic1.2-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2022/09/pic2.2-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2022/09/pic3-1-1024x625.jpg']",,,,"['46.7109', '-92.0484']","{'coordinates': ['46.7109', '-92.0484']}",, +https://mesocosm.org/mesocosm/bolmen-forskningsstation/,Bolmen Forskningsstation,Sweden Water Research AB,Sweden,Europe,"Sweden Water Research AB +Ideon Science Park Scheelevägen 15 +SE-223 70 Lund +","Linda Parkefelt +Please login or request access to view contact information. +",2017 - present," +Open access to national and international researchers. +Outdoor, freshwater, lake deployed in an adaptable jetfloat. +PE-film enclosures or 20 hardshell PE enclosures (ø = 0.9m, depth = 1.5m, volume = 700L). + +",,"Advance general understanding in ecology. Topics: biodiversity-functioning-stability relationships, community ecology, food web interactions and benthic-pelagic dynamics. Possibility to combine experimental research with historical lake monitoring data from Lake Bolmen (e.g., phytoplankton, zooplankton, fish, temperature measurements and others). +"," + + + + + 56.943190, 13.645610 + +",,,"Apogee SQ-500 (PAR), CTG Trilux fluorometer (chlorophyll-a, phycocyanin and turbidity) and Aanderaa 4531 optode (O2 and temperature) sensors fulltime deployed in each enclosure. CR1000 dataloggers and AM16/32B multiplexers. Possibility to develop Internet interface for collected data. One AP-2000 AquaRead Multiprobe (http://www.aquaread.com/portofolio/ap-2000/) and one Apogee MQ-500 (PAR) with handheld meters. +","Capacity in site (Bolmen Forskningsstation) up to 5-6 people with general facilities needed for accommodation. +"," +Tänk H2O: http://sydvatten.se/stipendiet-tank-h20/ +SITES: http://www.fieldsites.se/en-GB + +"," + + + +Photo credit: Juha Rankinen + + + + +Photo credit: Juha Rankinen + + + + +","['http://mesocosm.org/wp-content/uploads/2018/05/Bolmen_2-1024x577.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Bolmen_3-1024x577.jpg']",,,,"['56.943190', ' 13.645610']","{'coordinates': ['56.943190', '13.645610']}",, +https://mesocosm.org/mesocosm/sinderhoeve/,Sinderhoeve,Wageningen Environmental Research,The Netherlands,Europe,"Telefoonweg 77 +6871NJ Renkum +The Netherlands +","Dr ir Ivo Roessink +ivo.roessink@wur.nl +  +",1990 - present,"outdoor – pelagic/benthic – freshwater +A variety of land-based systems ranging from 40 m long 55 m3 experimental ditches, four types of ponds of different sizes to 100 L microcosms. All is situated on a 11 ha fenced off test site and there are always possibilities to construct new systems if required by the research question. +"," +Toxins & chemicals +Invasive aquatic species + +"," +ecotoxicology +aquatic ecology +invasive aquatic species +remediation research + +"," + + + + + 51.998681, 5.752708 + +"," +ecotoxicology +aquatic ecology +invasive aquatic species +remediation research + +"," +ecotoxicology +aquatic ecology +aquatic invasive species +turtles +freshwater crayfish +phytoplankton +zooplankton +microbial community +macrozoobenthos +emerging insects +macrophytes +periphyton + +","Several aquatic test systems of different volume are available on site including all materials to sample plankton, macrobenthos and emerging insects. pH, DO, T and EC meters plus alkalinity measurements can be performed on site. In addition, a small lab facility is present where several small lab equipment such as ovens, fume hood and microscopes are available. +","Not available on site. A variety of housing possibilities is available on the campus of Wageningen University and the town of Wageningen or its surroundings. +","www.sinderhoeve.org +  +"," + + + +Foto credit: Wageningen Environmental Research + + + + +Foto credit: Wageningen Environmental Research + + + + +Foto credit: Wageningen Environmental Research + + + + +SInderhoeve areal; Figure cerdit: Wageningen Environmental Research +  + + + + +  +","['http://mesocosm.org/wp-content/uploads/2018/11/Foto-sloten-sinderhoeve-1024x697.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/DSC02496-768x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/IMG_2919-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/Perspectief-Sinderhoeve-kl-1024x679.jpg']",,,,"['51.998681', ' 5.752708']","{'coordinates': ['51.998681', '5.752708']}",, +https://mesocosm.org/mesocosm/iberian-pond-network-ipn/,Iberian Pond Network (IPN),"InBio/CIBIO, University of Évora","Portugal, Spain",Europe,"InBio/CIBIO, University of Évora, Largo dos +Colegiais, 7000 Évora, Portugal +","Prof. Miguel B. Araújo +Dr. Miguel Matias +Please login or request access to view contact information. +",2014 to present,"outdoor – pelagic/benthic – freshwater +192 mesocosms deployed across six regions. The mesocosms consist of 1000-L tanks that mimic small ponds. In each location, there are 32 mesocosms installed ca. 3-5 meters apart. +","Water volume, temperature, chlorophyll, turbidity, pH, oxygen, methane. +","Climate change, biogeography, biotic interactions, ecosystem functioning +"," + + + + + + + + + 41.1465479,-8.6156998;38.5685819,-7.9107097 + +",,,"Temperature loggers +",,"http://www.maraujolab.com/iberianponds/ +"," + + + +Distribution of mesocosm experimental sites in the Iberian Peninsula + + + + +Évora – Herdade da Mitra (Portugal) + + + + +Toledo – La Higueruela Experimental Farm (Spain) + + + + +","['http://mesocosm.org/wp-content/uploads/2017/02/IberanPondProject_400x1-300x253.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/charcas_evora_3_295.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/charcas_higueruela_3_295.jpg']",,,,"['41.1465479', '-8.6156998']","{'coordinates': ['41.1465479', '-8.6156998']}",, +https://mesocosm.org/mesocosm/iberian-pond-network-ipn/,Iberian Pond Network (IPN),"InBio/CIBIO, University of Évora","Portugal, Spain",Europe,"InBio/CIBIO, University of Évora, Largo dos +Colegiais, 7000 Évora, Portugal +","Prof. Miguel B. Araújo +Dr. Miguel Matias +Please login or request access to view contact information. +",2014 to present,"outdoor – pelagic/benthic – freshwater +192 mesocosms deployed across six regions. The mesocosms consist of 1000-L tanks that mimic small ponds. In each location, there are 32 mesocosms installed ca. 3-5 meters apart. +","Water volume, temperature, chlorophyll, turbidity, pH, oxygen, methane. +","Climate change, biogeography, biotic interactions, ecosystem functioning +"," + + + + + + + + + 41.1465479,-8.6156998;38.5685819,-7.9107097 + +",,,"Temperature loggers +",,"http://www.maraujolab.com/iberianponds/ +"," + + + +Distribution of mesocosm experimental sites in the Iberian Peninsula + + + + +Évora – Herdade da Mitra (Portugal) + + + + +Toledo – La Higueruela Experimental Farm (Spain) + + + + +","['http://mesocosm.org/wp-content/uploads/2017/02/IberanPondProject_400x1-300x253.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/charcas_evora_3_295.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/charcas_higueruela_3_295.jpg']",,,,"['38.5685819', '-7.9107097']","{'coordinates': ['38.5685819', '-7.9107097']}",, +https://mesocosm.org/mesocosm/aquatic-research-facility-at-the-university-of-kansas-field-station/,Aquatic Research Facility at the University of Kansas Field Station,University of Kansas Field Station,USA,North America,"350 Wild Horse Road, Lawrence, KS 66044, USA +","Ted Harris +Please login or request access to view contact information. +",40,"The Aquatic Research Facility at the KU Field Station provides a physical platform for a broad range of field‐based research. Experimental ponds and tanks (mesocosms) function as surrogates of the natural environment and permit replication of treatments and controls. They allow rigorous tests of ecological relationships, which otherwise can be difficult to identify in natural settings. +Outdoor facilities: The Aquatic Research Facility was developed in stages over a 40-year period.  It now is one of the largest aquatic research facilities in the U.S. and is used to address both basic and applied research questions. +Major components of the Aquatic Research Facility infrastructure include 100 experimental ponds ranging in size from 0.01 to 0.8 hectares; 77 ponds are 0.045 hectares, and 10 are 0.01 hectares. These ponds are filled/drained from the bottom, which allows ponds to function as experimental wetlands or lentic systems. +In addition, the facility has 80 large, 11‐cubic‐meter fiberglass tanks and a variety of enclosures that can be used for in situ experiments in any of the ponds. Experimental short flow through streams can also be constructed and used on site. +On a larger scale, Cross Reservoir (Surface area 3 hectares, 12 meters deep, 50-hectare watershed) serves as a model of small Midwestern reservoirs. Details on the biotic and abiotic conditions in Cross can be found in deNoyelles et al. 2016. +Experimental aquatic systems such as these effectively simulate lakes and reservoirs in central North America. Small ponds are a critical link between aquatic and terrestrial habitats because they often are the first type of aquatic habitat to receive nonpoint source pollutants. +Indoor facilities: A 325-square-meter greenhouse/mesocosm building, constructed in 2013, provides modern climate‐ controlled space that facilitates year‐round aquatic studies. A freestanding 110-square-meter aquatic research laboratory provides a space for sample preparation and analyses and is equipped with a flow-through water supply from the pond infrastructure. In addition, the Armitage Education Center has adjacent wet and dry laboratory facilities, a full kitchen, showers, laundry, classroom, and meeting space to accommodate up to 55 people. Two sleeping cabins are available to researchers for longer overnight stays. +","Our outdoor and indoor facilities allow a multitude of parameters to be manipulated or controlled at varying scales. Water used in experiments is discarded to a series of catchment reservoirs on-site. Catchment reservoirs have long residence times, which allows for degradation of herbicides/pesticides/pharmaceuticals with relatively short half-lives. +Additionally, power is available at many of the ponds, allowing researchers to run large equipment within ponds/tanks for long time scales if needed. +","Research topics have included: + +Cyanobacteria blooms and associated cyanotoxins +Effects of herbicides, pesticides, and pharmaceutical products on algal, zooplankton, and fish communites +Algal biofuels +Environmental DNA fate and transport +Ecological and biological stoichiometry +Deep Chlorophyll Maxima (DCM) and algal migration +Persistent pollutant degradation rates and processes +Emergent insects +Endangered species +Fish competition and predation +Trophic cascades/complex interactions + +"," + + + + + 39.048918,-95.191171 + +","Effects of pollutants – nutrients, herbicides, pesticides, pharmaceuticals, and personal care products – on aquatic ecosystems and their complex interactions.  +",,"Equipment housed at the field station—tractors, mowers, loaders, water haulers, off-road vehicles, fire rigs (in case researchers wish to examine the response of aquatic systems to specific terrestrial/watershed fire regimes)—is used to implement and maintain research projects. + +","The Armitage Education Center at the KU Field Station has adjacent wet and dry laboratory facilities, a full kitchen, showers, laundry, and classroom and meeting space to accommodate up to 55 people. Two sleeping cabins are available to researchers for longer overnight stays. + +","https://biosurvey.ku.edu/field-station/brochures +Publications: + + + + +Whittemore, D., and W.D. Kettle. 2016. Symposium overview: Ecology and climate change research at Kansas natural areas and field stations. Transactions of the Kansas Academy of Science 119:1-4. + + + + +deNoyelles, F., Smith, V.H., Kastens, J.H., Bennett, L., Lomas, J., Knapp, C., Bergin, S., Dewey, S., Chapin, B., Graham, D. 2016. A 21-year record of vertically migrating subepilimnetic populations of Cryptomonas spp. Inland Waters 6: 173-184. + + + + +Kettle, W.D. 2016. The University of Kansas Field Station: A platform for studying ecological and hydrological aspects of climate change. Transactions of the Kansas Academy of Science 119:12-20. + + + + +Turner, C.R., K.L. Uy, and R.C. Everhart. 2014. Fish environmental DNA is more concentrated in aquatic sediments than surface water. Biological Conservation. 2014. http://dx.doi.org/10.1016/j.biocon.2014.11.017 + + + + +Turner, C.R., D.J. Miller, K.J. Coyne, and J. Corush. 2014. Improved methods for capture, extraction, and quantitative assay of environmental DNA from Asian Bigheaded Carp (Hypophthalmichthys spp.) PLoS ONE 9(12): e114329. doi: 0.1371/journal.pone.0114329 + + + + +Fortier, M-O.P., G.W. Roberts, S.M. Stagg-Williams, and B.S.M. Sturm. 2014. Life cycle assessment of bio-jet fuel from hydrothermal liquefaction of microalgae. Applied Energy 122:73–82. + + + + +Bode, C., M. Criss, A. Ising, S. McCue, S. Ralph, S. Sharp, V. Smith, and B. Sturm. 2014. Pond power: How to use algae to energize inquiry and interdisciplinary connections. The Science Teacher 81(2). + + + + +Smith, V.H. 2014. Progress in algae as a feedstock for bioproducts. Industrial Biotechnology 10(3):159-161. + + + + +Cochran, F. V. and N. A. Brunsell. 2012. Temporal scales of tropospheric CO2, precipitation, and ecosystem responses in the central Great Plains. Remote Sensing of Environment 127: 316-328. + + + + +Petrie, M. D. and N. A. Brunsell. 2012. The role of precipitation variability on the ecohydrology of grasslands. Ecohydrology doi:10.1002/eco.224, 5, 337-345. + + + + +Knapp, C. W., W. Zhang, B. S. M. Sturm, D. W. Graham. Differential fate of erythromycin and beta-lactam resistance genes from swine lagoon waste under different aquatic conditions. Environmental Pollution. Volume 158, Issue 5, May 2010, 1506–1512. DOI: 10.1016/j.envpol.2009.12.020 + + + + +Hanson, M.L., C.W. Knapp, and D.W. Graham. 2006. Field assessment of oxytetracycline exposure to the freshwater macrophytes Elodea dense (Pianch.) and Ceratophyllum demersum L. Environmental Pollution 141:434-442. + + + + +Knapp, C.W., L.A. Cardoza, J. Hawes, E.M.H. Wellington, C.K. Larive, and D.W. Graham. 2005. Fate and effects of Enrofloxacin in aquatic systems under different light conditions. Environmental Science and Technology 39:9140-9146. + + + + +Knapp, C.W., L. Lagadic, T. Caquet, M.L. Hanson, and D.W. Graham. 2005. Response of water column microbial communities to sudden exposure to Deltamethrin in aquatic mesocosms. FEMS Microbiological Ecology 54:157-165. + + + + +Knapp, C.W. and D.W. Graham. 2004. Development of alternate ssu-rRNA probing strategies for characterizing aquatic microbial communities. Journal of Microbial Methods 56:323-330. + + + + +Lennon, J.T., V. Smith, A. Dzialowski. 2003. Invasibility of plankton food webs along a trophic state gradient. Oikos 102:191-203. + + + + +Ferrington, L.C., Jr. 2003. Studying intermittent streams. Ch. 4, pp. 46-64 in “Functions of Intermittent Streams: A Guidance Document for the Technical Information Workshop.” Proceedings, North American Benthological Society, Athens, GA, May 2003. + + + + +Ensz, A.P., C.W. Knapp, and D.W. Graham. 2003. Influence of autochthonous dissolved organic carbon and nutrient limitation on alachlor biotransformation in aerobic aquatic systems. Environmental Science and Technology 37:4157-4162. + + + + +Kettle, W., R. Hagen, J. deNoyelles, E. A. Martinko. 2001. The University of Kansas Field Station and Ecological Reserves: A Half Century of Research and Education. Kansas Biological Survey, Lawrence, KS Miscellaneous Publication Number 9:68 pp. —  + + + + +Graham, W.D., J. deNoyelles. 1995. The role of methanotrophic bacteria in aquatic bioremediation in a Kansas reservoir. Department of the Interior No. 3187:50 pp. + + + + +Goldhammer,D.S., C.A. Wright, M.A. Blackwood, and L.C. Ferrington Jr. 1992. Composition and phenology of Chironomidae from the Nelson Environmental Study Area, University of Kansas. Netherlands Journal of Aquatic Ecology 26(2-4):281-291. + + + + +Liechti, P., D. Huggins. 1991. Selected aquatic insects of the Kansas Ecological Reserves. Kansas Academy of Science Multidisciplinary Guidebook 4. Lawrence, KS:Kansas Geological Survey. —  + + + + +Kettle, W., D.O. Whittemore. 1991. Ecology and Hydrology of the Kansas Ecological Reserves and Baker Wetlands. Ecology and Hydrology of the Kansas Ecological Reserves and Baker Wetlands. Lawrence, KS:Kansas Geological Survey. 1-125. + + + + +Kettle, W. 1991. Kansas Ecological Reserves–An overview. Ecology and Hydrology of the Kansas Ecological Reserves and Baker Wetlands. Lawrence, KS:Kansas Geological Survey. 20-22. —  + + + + +Wright, C.A., D.S. Goldhammer, M.A. Blackwood, and L.C. Ferrington Jr. 1991. Chironimids of the Nelson Environmental Study Area. In Ecology and Hydrology of the Kansas Ecological Reserves and the Baker University Wetlands, W.D. Kettle and D.O. Whittemore (eds.), KGS Open-File Report 91-35, pp. 98-102. + + + + +Huggins, D.G. and M.L. Johnson. 1991. Ecological consequences of the control and elimination of macrophytes in small ponds by atrazine and grass carp. Proceedings from the Regional Lake Management Conference, Des Moines, IA, June 1991 pp. 124-148. + + + + +Kettle, W.D. and D.O. Whittemore. 1991. Ecology and Hydrogeology of the Kansas Ecological Reserves and the Baker University Wetlands. Kansas Geological Survey Open-File Report 91-35. + + + + +Whittemore, D.O. 1991. Hydrogeology of the natural areas. In Ecology and Hydrology of the Kansas Ecological Reserves and the Baker University Wetlands, W.D. Kettle and D.O. Whittemore (eds.), KGS Open-File Report 91-35, pp. 10-19. + + + + +Kettle, W., J. deNoyelles. 1990. Determination of herbicide-induced alterations of aquatic habitats in Kansas. Department of the Interior No. 272:53 pp. + + + + +Randtke, S.J., F. deNoyelles Jr., J.E. Denne, L.R. Hathaway, R.E. Miller, A.S. Melia, and C.E. Burkhead. 1988. Source control of THM precursors. In Proceedings of the Annual Conference of the American Water Works Association. 14-18 June 1988. Kansas City, MO, pp. 1545-1575. + + + + +Randtke, S.J., F. deNoyelles Jr., C.E. Burkhead, R.E. Miller, J.E. Denne, L.R. Hathaway, and A.S. Melia. 1988. Trihalomethane precursors in Kansas water supplies: occurrence, source control measures, and impacts on drinking water treatment. In Proceedings of the Thirty-Eighth Annual Environmental Engineering Conference. 3 February 1988. University of Kansas, Lawrence, KS, pp. 47-89. + + + + +Randtke, S.J., F. deNoyelles Jr., and C.E. Burkhead. 1987. Trihalomethane precursors in Kansas lakes: sources and control. Phase II. Contribution Number 266. Kansas Water Resources Research Institute, University of Kansas, Lawrence, KS, pp. 1-188. + + + + +Hambright, K.D., R.J. Trebatoski, R.W. Drenner, W. Kettle. 1986. Experimental study of the impacts of bluegill (Lepomis macrochirus) and largemouth bass (Micropterus salmoides) on pond community structure. Canadian Journal of Fisheries and Aquatic Sciences 43(6):1171-1176. + + + + +Dewey, S.L. 1986. Effects of the herbicide atrazine on aquatic insect community structure and emergence. Ecology 67(1):148-162. + + + + +Randtke, S.J., F. deNoyelles Jr. and C.E. Burkhead. 1986. Trihalomethane precursors in Kansas lakes: sources and control (Report of year one results). Contribution Number 255. Kansas Water Resources Research Institute, University of Kansas, Lawrence, KS, pp. 1-114. + + + + +Stay, F.S., D.P. Larsen, A. Katko, and C.M. Rohm. 1985. Effects of atrazine on community level responses in Taub microcosms. In T.P. Boyle, (ed.), Validation and Predictability of Laboratory Methods for Assessing the Fate and Effects of Contaminants in Aquatic Ecosystems. American Society for Testing and Materials, Philadelphia, PA, Special Technical Publication. + + + + +Drenner, R.W., S.B. Taylor, X. Lazzaro, W. Kettle. 1984. Particle-grazing and plankton community impact of an omnivorous cichlid. Transactions of the American Fisheries Society 113:397-402. + + + + +Riessen, H.P., W.J. O’Brien, and B. Loveless. 1984. An analysis of the components of Chaoborus predation on zooplankton and the calculation of relative prey vulnerabilities. Ecology 65(2):514-522. + + + + +Wright, D.I. and W.J. O’Brien. 1984. The development and field test of a tactical model of the planktivorous feeding of white crappie (Pomoxis annularis). Ecological Monographs 54(1):65-98. + + + + +Reinke, D.C. 1983. Algae collected by Rufus H. Thompson, II: Parallela novae-zelandiae, first report from North America. Technical Publications of the State Biological Survey of Kansas, University of Kansas 13:22-23. + + + + +deNoyelles, J., W. Kettle. 1983. Site studies to determine the extent and potential impact of herbicide contamination in Kansas waters. Kansas Water Resources Research Institute Contribution No. 239:1-37. + + + + +deNoyelles, J., W. Kettle, A.M. Kadoum. 1982. Plankton responses in experimental ponds to atrazine, the most heavily used pesticide in the United States. Environmental Protection Agency 14 pp. + + + + +deNoyelles, J., W. Kettle. 1980. Experimental pond studies demonstrating the development of responses to a herbicide (atrazine) resulting from altered interactions among plankton species. Environmental Protection Agency 50 pp. + + + + +Lei, C.H. and K.B. Armitage. 1980. Ecological energetics of a Daphnia ambigua population. Hydrobiologia 70:133-143. + + + + +Lei, C.H. and K.B. Armitage. 1980. Energy budget of Daphnia ambigua Scourfield. Journal of Plankton Research 2(4):261-281. + + + + +Lei, C.H. and K.B. Armitage. 1980. Growth, development and body size of field and laboratory populations of Daphnia ambigua. Oikos 35(1):31-48. + + + + +deNoyelles, F. Jr. and W.D. Kettle. 1980. Herbicides in Kansas waters–evaluations of the effects of agricultural runoff and aquatic weed control on aquatic food chains. Contribution Number 219. Kansas Water Resources Research Institute, University of Kansas, Lawrence, KS, pp. 1-40. + + + + +Lei, C.H. and K.B. Armitage. 1980. Population dynamics and production of Daphnia ambigua in a fish pond, Kansas. University of Kansas Science Bulletin 51(25):687-715. + + + + +"," + + + +View of tanks, replicated ponds, and catchment ponds – Photo Credit Scott Campbell + + + + +View of Cross Reservoir – Photo Credit Kirsten Bosnak + + + + +View core field station facilities – Photo Credit Google Earth + + + + +View of inoculated mesocosms in the 3-season greenhouse (4-season greenhouse also exists) – Photo Credit Ted Harris + + + + +One set of the replicated ponds– Photo Credit Scott Campbell + + + + +Sampling large mesocosm tanks – Photo Credit Kirsten Bosnak + + + + +","['http://mesocosm.org/wp-content/uploads/2019/04/View-of-tanks-replicated-ponds-and-catchment-ponds-–-Photo-Credit-Scott-Campbell-300x199.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/View-of-Cross-Reservoir-–-Photo-Credit-Kirsten-Bosnak-300x199.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/View-core-field-station-facilities-–-Photo-Credit-Google-Earth-300x200.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/View-of-inoculated-mesocosms-in-the-3-season-greenhouse-4-season-greenhouse-also-exists-–-Photo-Credit-Ted-Harris-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/One-set-of-the-replicated-ponds–-Photo-Credit-Scott-Campbell-300x199.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/Sampling-large-mesocosm-tanks-–-Photo-Credit-Kirsten-Bosnak-300x199.jpeg']",['http://mesocosm.org/wp-content/uploads/2019/04/equipment-300x199.jpeg'],['http://mesocosm.org/wp-content/uploads/2019/04/lodging-300x199.jpeg'],,"['39.048918', '-95.191171']","{'coordinates': ['39.048918', '-95.191171']}",, +https://mesocosm.org/mesocosm/life-infrastructure-ecp-facility-behavioural-ecology-of-fish-st-pee-lapitxuri/,"LIFE Infrastructure - ECP Facility (Behavioural Ecology of Fish, St Pée/Lapitxuri)",Infrastructure multi-site: RI LIFE,France,Europe,"RI LIFE INRA-AQUAPOLE +Agnes Bardonnet +64310 St-Pée-sur-Nivelle +France +  +IE ECP +UMR INRA-UPPA 1224 Ecobiop +INRA – Aquapôle, Ibarron +64310 St-Pée-sur-Nivelle +France +  +  +","Dr Agnès Bardonnet +Ing. Jean-Christophe Aymes +  +agnes.bardonnet@inra.fr +jean-christophe.aymes@inra.fr +","1982 - present (large flume, semi-natural stream); 2009 - present (tidal aquaria,, outdoor large basin)","St Pée facilities offer the opportunity to work with various sizes of artificial flowing-water mesocosms. +The Lapitxuri semi-natural stream (15 km from the INRA St Pée Institute) is fed by a diversion of a natural headwater stream. It is separated into 13 consecutive reaches (10m x 2.8m) allowing it to work with pseudo-replicates (each reach can be closed by downstream traps). T). Direct underwater observations can be performed on two reaches from an underground room. More classical mesocosms are available: 16 swedish tanks (2.5 m3), 8 circular tanks (0.1 m3), 6 indoor flumes (4.5 m long), 8 outdoor flumes (11m x 0.5m). +At the INRA St Pée Institute, a large 25 m3 circular flume (fluvarium) consists in 2 longitudinal sections (10 m x 1 m) separated by upstream and downstream traps. Water velocity (controlled by a propeller), light (twilight period possible), temperature (air+water), substratum and depth can be controlled. +Two smaller circular devices (tidal aquaria) consist of a 400 L aquarium where flow direction changes alternatively. They are located in two similar rooms, where air and water temperature, as well as light are controlled. It is used to investigate swimming behavior in tidal zone under different conditions or as replicates. +An outdoor large basin (756 m²) can be used under lentic (maximum depth: 4 m) or lotic (maximum depth: 80 cm) experimental situations. More classical mesocosms are available: 4 swedish tanks (2.5 m3), 2 series of 8 circular tanks (0. 16 or 0.5 m3), 1 series of 16 tanks (0.1 m3), 6 indoor flumes (1.50 m long). +"," +Discharge +water velocity +temperature +light +photoperiod +physical habitat and stream morphology +species compsition and individual characteristics + +","Evolution in Biodiversity under global change +Fish behavioral and physiological response to anthropogenic pressure (in particular for flow in context of climate change) +"," + + + + + + + 43.3561111, -1.5616666666666668; 43.2833333, -1.4822222222222223 + +","The LIFE Infrastructure is dedicated to the study of changes in freshwater ecosystems biodiversity with a primary interest in fish evolution and population dynamics. In this context, we also manipulate invertebrates, plants, mollusc, phyto and zooplankton. Major strengths of LIFE are its numerous facilities, the high expertise of its technical staff, and the possibility to perform experiments across a wide range of spatial and temporal scales. The main objective of  RI LIFE is to decipher the effects of multiple environmental forcings on individuals, populations or communities in order to inform management decisions for fish populations. +","Behavioral and evolutionary ecology of fish +In addition, the direct connection of PEARL and ECP, with ESE (https://www6.rennes.inra.fr/ese/) and ECOBIOP (https://ecobiop.com/) research teams ensures access to additional analytical platforms (environmental and analytical chemistry, trophic and molecular biology), as well as expertise of a broad scientific community. +"," +Variety of sampling tools for invertebrates and fish (emergence traps, nets, invertebrate or fish traps…) +electric fishing +PIT Tagging +mobile and fix antennas +habitat (flowmeters, series of sieves). +Sensors for continuous parameter recording (temperature, O2, conductivity, rainfall, PAR…) +Probes for temperature, pH, conductivity, dissolved O2, turbidity… +Equipment for sample measurements (weight scales, computer-connected optics…) +treatment (heat chamber, hood), and temporary stocking (fridges, -20°C and -80°C freezers) + +Energy laboratory (light-sensor respirometry chambers, Elemental analyser) + + +Organism behavior survey: Accelerometers, VIE tagging, Radio Tracking. + + +Strong expertise in using underwater and aerial Video. + + +","St Pée Inra Institute: Several hotels or guest houses are available in St Pée-sur-Nivelle town (located at 30 min from Biarritz Airport/Train station). +Lapitxuri: (20 min from St Pée) A container house equipped with two beds, a small kitchen and a toilet at the experimental site. +","https://www6.bordeaux-aquitaine.inra.fr/ie-ecp-ecobiop +Research website:  https://ecobiop.com/ +"," + + + +Aerial view St Pée, Foto credit: Skiba/INRA + + + + +Flume, Photo credit: Cheziere/UPPA + + + + +Aerial view Lapitxuri, Foto credit: DeChanzy-Laurent + + + + +Lapitxuri semi-natural stream, Foto credit: Glise/INRA + + + + +  +","['http://mesocosm.org/wp-content/uploads/2018/11/ECP_Aerial-view_St-Pée-1024x741.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Flume-1024x684.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Aerial-view_Lapitxuri.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Lapitxuri-semi-natural-stream.jpg']",,,,"['43.3561111', ' -1.5616666666666668']","{'coordinates': ['43.3561111', '-1.5616666666666668']}",, +https://mesocosm.org/mesocosm/life-infrastructure-ecp-facility-behavioural-ecology-of-fish-st-pee-lapitxuri/,"LIFE Infrastructure - ECP Facility (Behavioural Ecology of Fish, St Pée/Lapitxuri)",Infrastructure multi-site: RI LIFE,France,Europe,"RI LIFE INRA-AQUAPOLE +Agnes Bardonnet +64310 St-Pée-sur-Nivelle +France +  +IE ECP +UMR INRA-UPPA 1224 Ecobiop +INRA – Aquapôle, Ibarron +64310 St-Pée-sur-Nivelle +France +  +  +","Dr Agnès Bardonnet +Ing. Jean-Christophe Aymes +  +agnes.bardonnet@inra.fr +jean-christophe.aymes@inra.fr +","1982 - present (large flume, semi-natural stream); 2009 - present (tidal aquaria,, outdoor large basin)","St Pée facilities offer the opportunity to work with various sizes of artificial flowing-water mesocosms. +The Lapitxuri semi-natural stream (15 km from the INRA St Pée Institute) is fed by a diversion of a natural headwater stream. It is separated into 13 consecutive reaches (10m x 2.8m) allowing it to work with pseudo-replicates (each reach can be closed by downstream traps). T). Direct underwater observations can be performed on two reaches from an underground room. More classical mesocosms are available: 16 swedish tanks (2.5 m3), 8 circular tanks (0.1 m3), 6 indoor flumes (4.5 m long), 8 outdoor flumes (11m x 0.5m). +At the INRA St Pée Institute, a large 25 m3 circular flume (fluvarium) consists in 2 longitudinal sections (10 m x 1 m) separated by upstream and downstream traps. Water velocity (controlled by a propeller), light (twilight period possible), temperature (air+water), substratum and depth can be controlled. +Two smaller circular devices (tidal aquaria) consist of a 400 L aquarium where flow direction changes alternatively. They are located in two similar rooms, where air and water temperature, as well as light are controlled. It is used to investigate swimming behavior in tidal zone under different conditions or as replicates. +An outdoor large basin (756 m²) can be used under lentic (maximum depth: 4 m) or lotic (maximum depth: 80 cm) experimental situations. More classical mesocosms are available: 4 swedish tanks (2.5 m3), 2 series of 8 circular tanks (0. 16 or 0.5 m3), 1 series of 16 tanks (0.1 m3), 6 indoor flumes (1.50 m long). +"," +Discharge +water velocity +temperature +light +photoperiod +physical habitat and stream morphology +species compsition and individual characteristics + +","Evolution in Biodiversity under global change +Fish behavioral and physiological response to anthropogenic pressure (in particular for flow in context of climate change) +"," + + + + + + + 43.3561111, -1.5616666666666668; 43.2833333, -1.4822222222222223 + +","The LIFE Infrastructure is dedicated to the study of changes in freshwater ecosystems biodiversity with a primary interest in fish evolution and population dynamics. In this context, we also manipulate invertebrates, plants, mollusc, phyto and zooplankton. Major strengths of LIFE are its numerous facilities, the high expertise of its technical staff, and the possibility to perform experiments across a wide range of spatial and temporal scales. The main objective of  RI LIFE is to decipher the effects of multiple environmental forcings on individuals, populations or communities in order to inform management decisions for fish populations. +","Behavioral and evolutionary ecology of fish +In addition, the direct connection of PEARL and ECP, with ESE (https://www6.rennes.inra.fr/ese/) and ECOBIOP (https://ecobiop.com/) research teams ensures access to additional analytical platforms (environmental and analytical chemistry, trophic and molecular biology), as well as expertise of a broad scientific community. +"," +Variety of sampling tools for invertebrates and fish (emergence traps, nets, invertebrate or fish traps…) +electric fishing +PIT Tagging +mobile and fix antennas +habitat (flowmeters, series of sieves). +Sensors for continuous parameter recording (temperature, O2, conductivity, rainfall, PAR…) +Probes for temperature, pH, conductivity, dissolved O2, turbidity… +Equipment for sample measurements (weight scales, computer-connected optics…) +treatment (heat chamber, hood), and temporary stocking (fridges, -20°C and -80°C freezers) + +Energy laboratory (light-sensor respirometry chambers, Elemental analyser) + + +Organism behavior survey: Accelerometers, VIE tagging, Radio Tracking. + + +Strong expertise in using underwater and aerial Video. + + +","St Pée Inra Institute: Several hotels or guest houses are available in St Pée-sur-Nivelle town (located at 30 min from Biarritz Airport/Train station). +Lapitxuri: (20 min from St Pée) A container house equipped with two beds, a small kitchen and a toilet at the experimental site. +","https://www6.bordeaux-aquitaine.inra.fr/ie-ecp-ecobiop +Research website:  https://ecobiop.com/ +"," + + + +Aerial view St Pée, Foto credit: Skiba/INRA + + + + +Flume, Photo credit: Cheziere/UPPA + + + + +Aerial view Lapitxuri, Foto credit: DeChanzy-Laurent + + + + +Lapitxuri semi-natural stream, Foto credit: Glise/INRA + + + + +  +","['http://mesocosm.org/wp-content/uploads/2018/11/ECP_Aerial-view_St-Pée-1024x741.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Flume-1024x684.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Aerial-view_Lapitxuri.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Lapitxuri-semi-natural-stream.jpg']",,,,"[' 43.2833333', ' -1.4822222222222223']","{'coordinates': ['43.2833333', '-1.4822222222222223']}",, +https://mesocosm.org/mesocosm/heated-aquatic-mesocosms-for-climate-warming-experiment/,Heated Aquatic Mesocosms for Climate Warming Experiment,"Nanjing Institute of Geography and Limnology, Chinese Academy of Sciences",China,Asia,"73 East Beijing Road, Nanjing, China +","Dr. Hu He +Please login or request access to view contact information. +",Year 2016; conducted from 7 March to 3 July,"Mesocosms were operated at a subtropical temperature setting to compare the responses of zooplankton, phytoplankton and nutrients to warming in fish-present and fish-absent scenarios +"," +Temperature (ambient/+3°C) +Fish density (Without/with fish) + +","Fish-mediated plankton responses to increased temperature in subtropical aquatic mesocosm ecosystems +"," + + + + + 31.418517,120.218446 + +","Foodweb structure; zooplankton-phytoplankton interactions +","Restoration of subtropical and tropical shallow lakes +","400 L fiberglass-reinforced plastic tanks (90-cm high; 80- cm inside diameter at the top; 70-cm inside diameter at the base) +",,"https://doi.org/10.1016/j.watres.2018.07.055 +"," + + + +Location + + + + +Experiment setting, see publication: https://doi.org/10.1016/j.watres.2018.07.055 + + + + +Unheated mesocosms + + + + +Heated mesocosms + + + + +Water temperature trends + + + + +","['https://www.aquacosm.eu/wp-content/uploads/2019/03/location-300x170.png', 'https://www.aquacosm.eu/wp-content/uploads/2019/03/Experiment-setting-300x225.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Unheated-mesocosms-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Heated-mesocosms-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Water-temperature-trends-300x209.png']",,,,"['31.418517', '120.218446']","{'coordinates': ['31.418517', '120.218446']}",, +https://mesocosm.org/mesocosm/tropical-aquatic-ecology-mesocosm/,Tropical Aquatic Ecology Mesocosm,State University of Goiás,Brazil,South America,"BR153, Nº3105, Anápolis, Goiás, Brazil. +","Dr. João Carlos Nabout +Please login or request access to view contact information. +",2019 to present,"The mesocosm of Tropical Aquatic Ecology consist of 80 independents tanks (500L each) mimicking small shallow lake, and able to control of water volume, individual filling and drainage. The mesocosm are situated near a shallow oligotrophic reservoir (the water can be used in mesocosm). +The mesocosm of Tropical Aquatic Ecology at State University of Goiás was constructed with financial support of National Institutes of Science and Technology (INCT) in Ecology, Evolution and Biodiversity Conservation (EECBIO), Brazilian National Council for Scientific and Technological Development (CNPq), Goiás State’s of Research Foundation (FAPEG), and scholarship from INCT EECBio, CNPq, CAPES and Brazilian Network on Global Climate Change Research (Rede CLIMA). +","Water volume, nutrients (TP and TN) +","Biomonitoring of algae bloom using taxonomic functional and molecular data; Metacommunity; Impact of global climate change (extreme events) on micobiote +"," + + + + + -16.37930,-48.94672 + +","Microbiote (phytoplankton, zooplankton, 16S rRNA and 18S rRNA) +","Ecology of tropical shallow lakes and limnology +","Microscopes, water sensors (e.g. pH, temperature, oxygen, turbidity, chlorophyll-a), nutrients analysis (partner laboratories). +",,," + + + + +Figure 1 Mesocosm of Tropical Aquatic Ecology – Phase of constructio (Photo credit: João Nabout) + + + + + + +Figure 2 Mesocosm of Tropical Aquatic Ecology – Phase of construction (Photo credit: João Nabout) + + + + + + +Figure 3 Mesocosm of Tropical Aquatic Ecology – Pilot of first studies (Photo credit: João Nabout) + + + + + +Figure 4 Mesocosm of Tropical Aquatic Ecology – Finalized (Photo credit: João Nabout) + + + + +","['http://mesocosm.org/wp-content/uploads/2019/03/Figure-1-Mesocosm-of-Tropical-Aquatic-Ecology-–-Phase-of-construction-300x225.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Figure-2-Mesocosm-of-Tropical-Aquatic-Ecology-–-Phase-of-construction-300x128.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Figure-3-Mesocosm-of-Tropical-Aquatic-Ecology-–-Pilot-of-first-studies-300x224.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Figure-4-Mesocosm-of-Tropical-Aquatic-Ecology-Finalized-300x127.jpeg']",,,,"['-16.37930', '-48.94672']","{'coordinates': ['-16.37930', '-48.94672']}",, +https://mesocosm.org/mesocosm/life-infrastructure-pearl-facility-experimental-aquatic-platform-rennes-le-rheu/,"LIFE Infrastructure - PEARL facility (Experimental Aquatic Platform, Rennes/Le Rheu)",Infrastructure multi-site: RI LIFE,France,Europe,"RI LIFE INRA-AQUAPOLE +Agnes Bardonnet +64310 St-Pée-sur-Nivelle +France +  +U3E, INRA/AFB +65, rue de St Brieuc +35 042 Rennes cedex, +France +","Dr Eric Edeline, +Ing. Didier Azam +  +eric.edeline@inra.fr +didier.azam@inra.fr +",1987 - prensent (large earth ponds); 1997 - present (mesocosms platform and indoor microcosms),"Our platforms are engineered for versatility and adaptation to a large range of experimental designs. +The Rennes platform includes about 200 mesocosms (0.4 to 30 m3) and allows for a high replication of experimental treatments. We can reconstruct pond communities from invertebrates to fish to study their response to external forcing (natural or anthropogenic). Our mesocosms are also equipped for ecotoxicology experiments and manipulation of invasive species (we are accredited and master confinement and treatment procedures). +Additionally, a series of outdoor tanks are equipped for thermal experiments (up to 4°C above ambient temperature). +The mesocosm platform is complemented with an 800 m2 indoor microcosm (10-to-400 L) facility in which we can accurately manipulate environmental factors, and where we routinely culture a variety of organisms (algae, plants, plankton, invertebrates, amphibians, fish…). +  +Finally, at Le Rheu (5 km from Rennes) we further propose a series of large earth ponds of 100, 350, 500 or 1000 m3, which all may be  subdivided or installed with cages. +"," +Temperature (including via thermistors) +rain +light +photoperiod +nutrients +community structure (species and trophic composition) +gas (CO2, O2) + +","Population dynamics and community change in response to environment (in particular for contaminants in the context of global change) +"," + + + + + + + 48.1130833, -1.4822222222222223; 48.1202778, -1.7919444444444443 + +","The LIFE Infrastructure is dedicated to the study of changes in freshwater ecosystems biodiversity with a primary interest in fish evolution and population dynamics. In this context, we also manipulate invertebrates, plants, mollusc, phyto and zooplankton. Major strengths of LIFE are its numerous facilities, the high expertise of its technical staff, and the possibility to perform experiments across a wide range of spatial and temporal scales. The main objective of  RI LIFE is to decipher the effects of multiple environmental forcings on individuals, populations or communities in order to inform management decisions for fish populations. +","Population and community dynamics, Environment, Ecotoxicology +  +In addition, the direct connection of PEARL and ECP, with ESE (https://www6.rennes.inra.fr/ese/) and ECOBIOP (https://ecobiop.com/) research teams ensures access to additional analytical platforms (environmental and analytical chemistry, trophic and molecular biology), as well as expertise of a broad scientific community. +"," +Variety of sampling tools for invertebrates and fish (emergence traps, nets, invertebrate or fish traps…) +electric fishing +PIT Tagging +mobile and fix antennas +habitat (flowmeters, series of sieves). +Sensors for continuous parameter recording (temperature, O2, conductivity, rainfall, PAR…) +Probes for temperature, pH, conductivity, dissolved O2, turbidity… +Equipment for sample measurements (weight scales, computer-connected optics…) +treatment (heat chamber, hood), and temporary stocking (fridges, -20°C and -80°C freezers). +Sclerochronology laboratory (scales and otoliths). + +Laboratory spectrometers for most of dissolved elements + + +FlowCam 800 (organisms up to 600 µm) and FlowCam Macro (up to 5mm) + + +PhytoPam for measurement of active chlorophyll concentration and algal productivity. + + +Autoclave + + +Water samplers.Strong expertise in using electric fishing, acoustic cameras and acoustic tracking. + + +","Rennes mesocosm platform is located at AgroCampusOuest within the city of Rennes, a university city located 1.5 hours by train from Paris (Airport and train station in Rennes). On the campus, visitors have access to individual apartments, and many hotels are available in the vicinity of the campus. +","https://www6.rennes.inra.fr/u3e/DISPOSITIFS-EXPERTISES/Plateforme-PEARL +"," + + + +Aerial view Rennes experimental complex; Foto credit: Caquet/INRA +  + + + + +Series of 30 mesocosms, Foto credit: Beaumont/INRA + + + + +Aerial view ponds station, Foto credit: Geoportrail/IGN + + + + +Series of mesocosms 30 m3 and 9 m3, Foto credit: Beaumont/INRA + + + + +  +","['http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Aerial_view_Rennes_experimental_complex.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Serie_of_30_mesocoms_3-m3-1024x678.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Aerial_view-Ponds-Station_PF-Etangs-1024x594.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Mesocosms_Series_30m3_and_9-m3-1024x678.jpg']",,,,"['48.1130833', ' -1.4822222222222223']","{'coordinates': ['48.1130833', '-1.4822222222222223']}",, +https://mesocosm.org/mesocosm/life-infrastructure-pearl-facility-experimental-aquatic-platform-rennes-le-rheu/,"LIFE Infrastructure - PEARL facility (Experimental Aquatic Platform, Rennes/Le Rheu)",Infrastructure multi-site: RI LIFE,France,Europe,"RI LIFE INRA-AQUAPOLE +Agnes Bardonnet +64310 St-Pée-sur-Nivelle +France +  +U3E, INRA/AFB +65, rue de St Brieuc +35 042 Rennes cedex, +France +","Dr Eric Edeline, +Ing. Didier Azam +  +eric.edeline@inra.fr +didier.azam@inra.fr +",1987 - prensent (large earth ponds); 1997 - present (mesocosms platform and indoor microcosms),"Our platforms are engineered for versatility and adaptation to a large range of experimental designs. +The Rennes platform includes about 200 mesocosms (0.4 to 30 m3) and allows for a high replication of experimental treatments. We can reconstruct pond communities from invertebrates to fish to study their response to external forcing (natural or anthropogenic). Our mesocosms are also equipped for ecotoxicology experiments and manipulation of invasive species (we are accredited and master confinement and treatment procedures). +Additionally, a series of outdoor tanks are equipped for thermal experiments (up to 4°C above ambient temperature). +The mesocosm platform is complemented with an 800 m2 indoor microcosm (10-to-400 L) facility in which we can accurately manipulate environmental factors, and where we routinely culture a variety of organisms (algae, plants, plankton, invertebrates, amphibians, fish…). +  +Finally, at Le Rheu (5 km from Rennes) we further propose a series of large earth ponds of 100, 350, 500 or 1000 m3, which all may be  subdivided or installed with cages. +"," +Temperature (including via thermistors) +rain +light +photoperiod +nutrients +community structure (species and trophic composition) +gas (CO2, O2) + +","Population dynamics and community change in response to environment (in particular for contaminants in the context of global change) +"," + + + + + + + 48.1130833, -1.4822222222222223; 48.1202778, -1.7919444444444443 + +","The LIFE Infrastructure is dedicated to the study of changes in freshwater ecosystems biodiversity with a primary interest in fish evolution and population dynamics. In this context, we also manipulate invertebrates, plants, mollusc, phyto and zooplankton. Major strengths of LIFE are its numerous facilities, the high expertise of its technical staff, and the possibility to perform experiments across a wide range of spatial and temporal scales. The main objective of  RI LIFE is to decipher the effects of multiple environmental forcings on individuals, populations or communities in order to inform management decisions for fish populations. +","Population and community dynamics, Environment, Ecotoxicology +  +In addition, the direct connection of PEARL and ECP, with ESE (https://www6.rennes.inra.fr/ese/) and ECOBIOP (https://ecobiop.com/) research teams ensures access to additional analytical platforms (environmental and analytical chemistry, trophic and molecular biology), as well as expertise of a broad scientific community. +"," +Variety of sampling tools for invertebrates and fish (emergence traps, nets, invertebrate or fish traps…) +electric fishing +PIT Tagging +mobile and fix antennas +habitat (flowmeters, series of sieves). +Sensors for continuous parameter recording (temperature, O2, conductivity, rainfall, PAR…) +Probes for temperature, pH, conductivity, dissolved O2, turbidity… +Equipment for sample measurements (weight scales, computer-connected optics…) +treatment (heat chamber, hood), and temporary stocking (fridges, -20°C and -80°C freezers). +Sclerochronology laboratory (scales and otoliths). + +Laboratory spectrometers for most of dissolved elements + + +FlowCam 800 (organisms up to 600 µm) and FlowCam Macro (up to 5mm) + + +PhytoPam for measurement of active chlorophyll concentration and algal productivity. + + +Autoclave + + +Water samplers.Strong expertise in using electric fishing, acoustic cameras and acoustic tracking. + + +","Rennes mesocosm platform is located at AgroCampusOuest within the city of Rennes, a university city located 1.5 hours by train from Paris (Airport and train station in Rennes). On the campus, visitors have access to individual apartments, and many hotels are available in the vicinity of the campus. +","https://www6.rennes.inra.fr/u3e/DISPOSITIFS-EXPERTISES/Plateforme-PEARL +"," + + + +Aerial view Rennes experimental complex; Foto credit: Caquet/INRA +  + + + + +Series of 30 mesocosms, Foto credit: Beaumont/INRA + + + + +Aerial view ponds station, Foto credit: Geoportrail/IGN + + + + +Series of mesocosms 30 m3 and 9 m3, Foto credit: Beaumont/INRA + + + + +  +","['http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Aerial_view_Rennes_experimental_complex.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Serie_of_30_mesocoms_3-m3-1024x678.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Aerial_view-Ponds-Station_PF-Etangs-1024x594.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Mesocosms_Series_30m3_and_9-m3-1024x678.jpg']",,,,"[' 48.1202778', ' -1.7919444444444443']","{'coordinates': ['48.1202778', '-1.7919444444444443']}",, +https://mesocosm.org/mesocosm/kosmos-kiel-off-shore-mesocosms-for-ocean-simulations/,KOSMOS (Kiel Off-Shore Mesocosms for Ocean Simulations),GEOMAR-Helmholtz Center for Ocean Research Kiel,Germany,Europe,"GEOMAR-Helmholtz Center for Ocean Research + West shore campus + Düsternbrooker Weg 20 + D-24105 Kiel + East shore campus + Wischhofstr. 1-3 + D-24148 Kiel +","Professor Ulf Riebesell (KOSMOS) +Please login or request access to view contact information. +",,"off-shore/outdoor/indoor – pelagic/benthic – marine/brackish + Kiel-KOSMOS + outdoor mobile – pelagic – marine/brackish + 9 floatting structures of 50 m3 (emerging part : 2.5 m high, 2.8 m Ø. submerged part : 17 m high, 2 m Ø) +","KOSMOS: CO2, nutrients +","KOSMOS: phytoplankton, zooplankton, chemistry, biogeochemistry, ecology +"," + + + + + 54.330034,10.1482026 + +",,,"KOSMOS: mobile meoscosm structure can be installed on any study site, transportation with RVs and/or in standard 20 and 40-foot containers. +",,"http://www.geomar.de/en/ + Media report: Window on future ocean +"," + + + +KOSMOS mesocosms deployed in Raunefjord off Bergen, Norway in 2011 + + + + +  +KOSMOS deployment with the Spanish research vessel „Hesprides“ off Gran Canaria in 2014 + + + + +Sampling of the KOSMOS mesocosms during an experiment on the effects of ocean acidification off Gran Canaria in 2014 + + + + +","['http://mesocosm.org/wp-content/uploads/2017/02/KOSMOS-Raunefjord_2011-300x142.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/KOSMOS-deployment-with-the-Spanish-research-vessel-„Hesprides“-off-Gran-Canaria-in-2014-300x225.png', 'http://mesocosm.org/wp-content/uploads/2017/03/Sampling-of-the-KOSMOS-mesocosms-during-an-experiment-on-the-effects-of-ocean-acidification-off-Gran-Canaria-in-2014-300x225.png']",,,,"['54.330034', '10.1482026']","{'coordinates': ['54.330034', '10.1482026']}",, +https://mesocosm.org/mesocosm/maximus/,MAXIMUS,Roskilde University,Denmark,Europe,"Roskilde University + Universitetsvej 1 + P.O. Box 260 + 4000 Roskilde +","Benni Winding Hansen +Please login or request access to view contact information. +",,"outdoor – pelagic – marine + land based tanks +",,"fish fry production, turbot larve, ecosystem studies +"," + + + + + 55.6519602,12.137471 + +",,,,,"http://rucforsk.ruc.dk/site/person/bhansen +Impaq project: Turbot tracked in a tanknutrients, +",,,,,,"['55.6519602', '12.137471']","{'coordinates': ['55.6519602', '12.137471']}",, +https://mesocosm.org/mesocosm/innotech-alberta-aquatic-mesocosm-facility/,InnoTech Alberta Aquatic Mesocosm Facility,InnoTech Alberta,Canada,North America,"PO Bag 4000 +Hwy 16A & 75 Street +Vegreville, Alberta, Canada, T9C 1T4 +","Brian Eaton, Manager, Environmental Impacts +Please login or request access to view contact information. +  +Jim Davies, Researcher, Environmental Impacts +Please login or request access to view contact information. +",2017 - present,"1) AQUATIC MESOCOSMS +Our facility includes 30 outdoor polyethylene in-ground mesocosms (14 m3 operating volume each) nested within larger containment tanks.  +Each mesocosm is approximately 1.5 m deep and 3.6 m in diameter.  Overflow protection is provided by drainage into below-ground holding tanks.  The mesocosms are allowed to freeze each winter, resulting in ~ 0.5 m of liquid water maintained under ~ 1.0 m of snow and ice.  The water layer allows a range of taxa to persist across consecutive years, enabling multi-year studies. +A network of gravel roads allows large vehicles to access the mesocosms.  Wooden walkways and vertical posts support the staging and deployment of instrumentation, sampling materials, and other gear. +Evaporative losses are offset by potable water stored in a pair of large (25 m3) above-ground tanks and distributed to each mesocosm via a network of polyvinyl chloride (PVC) hoses. +Wastewater storage is provided by a series of above-ground tanks housed within a geomembrane-lined berm.  These tanks allow the storage of up to 125 m3 of wastewater from spring to early fall. +Emergent and submerged plants are propagated in shallow and deep artificial ponds respectively.  Biologically active water can be obtained via pipeline from a nearby pond or trucked in from an alternate source. +  +2) AQUATIC /TERRESTRIAL MESOCOSMS +InnoTech’s Above Ground Mesocosm Facility was constructed in collaboration with the Helmholtz-Alberta Initiative through the University of Alberta.  The facility consists of a geomembrane-lined and bermed containment pad (12 m x 28 m).  Currently, the facility includes 16 above ground mesocosms (5 m3, 1.32 m tall, 2.2 m diameter) capable of housing short to medium-term terrestrial or aquatic experiments, as well as 32 smaller (0.37 m3, 1.28 m tall, 0.6 m diameter) tanks that can be used for smaller-scale studies, or in conjunction with the larger tanks (see below).  +The mesocosms can be adapted for many different experimental conditions or to measure a range of parameters.  For example, past studies have included the forced aeration of the water column as a treatment condition, deployment of automated CO2 flux chambers on floating rafts, and the installation of a range of data loggers. +When empty, the tanks can be tipped on their side and rolled from place to place by a single person.  This allows the easy rearrangement of tanks to suit the needs of each study, and additional tanks can be added, depending on spacing and size of each tank. +The mesocosms are housed inside a geomembrane-lined containment berm which slopes towards a catchment basin.  In the event of a leak, materials will flow downhill to the catchment basin where they can be analyzed, then collected and disposed of appropriately. +A total of nine 2-inch access ports are installed at the top, middle, and bottom of each mesocosm tank (3 at each level).  These ports allow the installation of sensors and/or hoses.  If the mesocosms contain soil, hoses can be connected to corresponding ports on a pair of smaller (0.37 m3) tanks.  Hydraulic head will alter water level in the mesocosm by adding or removing water from these smaller tanks.  Alternatively, multiple mesocosms can be connected by hoses, allowing water to flow from one mesocosm to another.  Such a feature facilitates water homogenization across the entire array, or may be useful in studying multi-stage water treatment wetlands. +The facility is accessible to large vehicles including trucks and heavy equipment.  Biologically active water can be obtained via pipeline from a nearby pond or trucked in from an alternate source. +  +  +Support services.  Scientific and logistical support services (e.g., analytical chemistry, molecular biology, plant sciences, heavy equipment, and fabrication services) are available within 200 m of the facility. +  +"," +Source water or soil +Water level +Soil profile +Sediment +Installed macrophyte community +Uniform environmental conditions + +"," +Ecological effects of impacted materials, +aquatic plant biology, +seasonal effects, +environmental genomics + +  + +Environmental genomics, +microbial degradation of impacted materials +herbicide degradation/remediation +vegetation and soil community response to different soil amendments +modelling impacts of climate change on soil communities and/or vegetation + +"," + + + + + 53.506641,-112.093612 + +"," +Mitigation of industrial impacts +Ecotoxicology +Invasive species control +De-risking technologies +Validation of control methods +Biocide testing + +"," +Aquatic ecology, +environmental genomics, +ecotoxicology, +industrial impact studies + +"," +30x nested mesocosms, each ~ 14 m3 +1x shallow supply pond (propagation of emergent plants for experiments) +4x deep supply pond (propagation of submerged plants for experiments) +2x potable water tanks, each ~ 25 m3 +Potable water distribution system +5x wastewater tanks in berm, each ~ 25 m3 +Collection of other tanks between 5 m3 and 25 m3 available for use +Road network +Solar-powered dewatering system +Irrigation pipeline to obtain biologically active surface water +Water handling equipment (pumps, hoses, carts) + +  + +16x above-ground mesocosms, each ~ 5 m3, in bermed containment field with dedicated capture basin +32x smaller tanks, each ~ 0.37 m3, for regulation of mesocosm water level via hydraulic head, or for use in smaller-scale mesocosm studies +Irrigation pipeline to obtain nearby surface water + +  + +Nearby service laboratories and support services +Laboratory and office space available +On-site security + +","Food and accommodation available in Vegreville, approximately 2 km away +","Mesocosm Test Facilities – InnoTech Alberta +","InnoTech Alberta Aquatic Mesocosms, photo credit: InnoTech Alberta +A water layer is maintained at the bottom of the mesocosms during winter, photo credits: InnoTech Alberta +InnoTech Alberta Aquatic Mesocosm Facility, photo credit: InnoTech Alberta +Elevated view of mesocosm facility with 2 smaller tanks nested within each of the main mesocosm tanks on the bermed containment pad. Photo Credit: InnoTech Alberta +Mescocosms being used for an aquatic experiment. Note the floating automated CO2 flux chambers in the tanks in the foreground. Photo Credit: InnoTech Alberta +","['http://mesocosm.org/wp-content/uploads/2023/08/sunset-innotech-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/08/sinter-innotech.jpg', 'http://mesocosm.org/wp-content/uploads/2023/08/birdview-InnoTech-1024x469.jpg', 'http://mesocosm.org/wp-content/uploads/2023/08/birdeye.jpg', 'http://mesocosm.org/wp-content/uploads/2023/08/ter2.jpg']",,,,"['53.506641', '-112.093612']","{'coordinates': ['53.506641', '-112.093612']}",, +https://mesocosm.org/mesocosm/lmu-mesocosms/,LMU Mesocosms,Ludwig-Maximilians-Universität,Germany,Europe,"Ludwig-Maximilians-Universität München + Department Biologie II + Aquatic Ecology + Großhaderner Str. 2 + 82152 Planegg-Martinsried +","Prof. Herwig Stibor + Dr. Maria Stockenreiter +Please login or request access to view contact information.,Please login or request access to view contact information. +",2005 - present,"outdoor – pelagic/benthic – freshwater + 8 concrete tanks, 3 temperature controlled basins, 10 smaller concrete tanks +","temperature, light, nutrients, species composition +","plankton ecology, climate change scenarios, nutrients, stoichiomenty, biodiversity and community assembly +"," + + + + + 48.109151,11.45844 + +",,,"Casy Counter, Fluorometer, nutrient analyses, scopes, several labs for small scale experiments, multispectral PAM, 8-LED-based Algal Lab Analyzer, spectroradiometer, climate chamber. +",,"http://www.aquatic-ecology.bio.lmu.de/contact/index.html +"," + + + +Munich Mesocosm facility on Campus, Photo: Dr. Stella Berger + + + + +Munich Mesocosm facility on Campus, Photo: Dr. Stella Berger + + + + +","['http://mesocosm.org/wp-content/uploads/2017/02/Munih_mesocosms2-300x188.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Munich_mesocosms1-300x225.jpg']",,,,"['48.109151', '11.45844']","{'coordinates': ['48.109151', '11.45844']}",, +https://mesocosm.org/mesocosm/crimac-calabria-marine-centre/,Crimac – Calabria Marine Centre,Stazione Zoologica Anton Dohrn,Italy,Europe,"Contrada Torre Spaccata, +Località Torre Spaccata, +87071 Amendolara (CS), +Italy +","Teresa Romeo +Please login or request access to view contact information., +  +",2024 - present,"The mesocosms are located within a thermostatic laboratory and consist of 20 aquariums, each with a capacity of approximately 40 litres (30x47x28 cm), featuring transparent methacrylate fronts. These aquariums are organised into two “twin” systems, with each system comprising 10 tanks arranged in two rows (5 tanks per row). Additionally, there are two independent systems dedicated to the maintenance of marine organisms, used for both acclimatisation and quarantine purposes. +"," +Temperature +pH +Salinity +Lights intensity + +"," +Marine Biology +Ecology +Biotechnology + +"," + + + + + 39.9588889;16.62666666666667 + +","Anthropogenic impacts on marine ecosystems +","Climate change and microplastic contamination +"," +20 Temperature controllers +20 pH controllers +20 Heater (100 W) +20 Cooler (200 W) +1 Cooler (1000 W) +Multiparameter probe (temperature, redox, pH, conductivity, dissolved oxygen) +Led lamps +Osmoregulation System +Data loggers (temp, light, pH, conductivity, dissolved oxygen) +Ph-meter +Spectrophotometer +Spectrofluorimeter +Marine Salinity Tester + +","There is no accommodation available on-site at the headquarters, but there are options for staying in nearby guest houses, hotels, and B&Bs. +","https://crimacszn.com/ +https://www.szn.it/index.php/it/chi-siamo/le-nostre-sedi/sedi-territoriali-di-tipo-a/calabria-marine-centre-crimac +","Amendolara Seat – outdoor facility, photo credits: +Detail of Rack, photo credits: +Filtration System, photo credit: +","['http://mesocosm.org/wp-content/uploads/2025/06/Photo-1.2-Amendolara-seat-outdoor-facility-Kopie-1024x714.jpg', 'http://mesocosm.org/wp-content/uploads/2025/06/Photo-3-Detail-of-Rack-2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2025/06/Photo-2.2-Filtration-System-Kopie-1024x768.jpg']",,,,['39.9588889'],{'coordinates': nan},, +https://mesocosm.org/mesocosm/crimac-calabria-marine-centre/,Crimac – Calabria Marine Centre,Stazione Zoologica Anton Dohrn,Italy,Europe,"Contrada Torre Spaccata, +Località Torre Spaccata, +87071 Amendolara (CS), +Italy +","Teresa Romeo +Please login or request access to view contact information., +  +",2024 - present,"The mesocosms are located within a thermostatic laboratory and consist of 20 aquariums, each with a capacity of approximately 40 litres (30x47x28 cm), featuring transparent methacrylate fronts. These aquariums are organised into two “twin” systems, with each system comprising 10 tanks arranged in two rows (5 tanks per row). Additionally, there are two independent systems dedicated to the maintenance of marine organisms, used for both acclimatisation and quarantine purposes. +"," +Temperature +pH +Salinity +Lights intensity + +"," +Marine Biology +Ecology +Biotechnology + +"," + + + + + 39.9588889;16.62666666666667 + +","Anthropogenic impacts on marine ecosystems +","Climate change and microplastic contamination +"," +20 Temperature controllers +20 pH controllers +20 Heater (100 W) +20 Cooler (200 W) +1 Cooler (1000 W) +Multiparameter probe (temperature, redox, pH, conductivity, dissolved oxygen) +Led lamps +Osmoregulation System +Data loggers (temp, light, pH, conductivity, dissolved oxygen) +Ph-meter +Spectrophotometer +Spectrofluorimeter +Marine Salinity Tester + +","There is no accommodation available on-site at the headquarters, but there are options for staying in nearby guest houses, hotels, and B&Bs. +","https://crimacszn.com/ +https://www.szn.it/index.php/it/chi-siamo/le-nostre-sedi/sedi-territoriali-di-tipo-a/calabria-marine-centre-crimac +","Amendolara Seat – outdoor facility, photo credits: +Detail of Rack, photo credits: +Filtration System, photo credit: +","['http://mesocosm.org/wp-content/uploads/2025/06/Photo-1.2-Amendolara-seat-outdoor-facility-Kopie-1024x714.jpg', 'http://mesocosm.org/wp-content/uploads/2025/06/Photo-3-Detail-of-Rack-2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2025/06/Photo-2.2-Filtration-System-Kopie-1024x768.jpg']",,,,['16.62666666666667'],{'coordinates': nan},, +https://mesocosm.org/mesocosm/ceh-aquatic-mesocosm-facility-camf/,CEH Aquatic Mesocosm Facility (CAMF),Centre for Ecology & Hydrology (CEH),United Kingdom,Europe,"Centre for Ecology & Hydrology (CEH) +Lancaster University +Library Avenue +Lancaster +LA1 4AP +UK +","Dr Heidrun Feuchtmayr +Please login or request access to view contact information. +",2011 - present,"Outdoor – pelagic/benthic – freshwater +32 cylindrical insulated fibreglass outdoor mesocosms, each 1.0 m deep and 2.0 m in diameter (3000 L) arranged in four rows with eight mesocosms in each and 3 fibreglass tanks 1.0 m deep and 4.0 m in diameter (12000 L). The site was built in 2011 and is located around 2 miles from the CEH office. +","Depending on each individual experiment. So far: + +temperature +nutrients +precipitation (flushing) +organic carbon + +","The site has been used for various climate change experiments so far, focussing on the effect of + +brownification on freshwater communities +multiple stressors + +warming +eutrophication +extreme rainfall events. + + + +"," + + + + + 54.014373, -2.777004 + +",,,"Electric heating elements are placed in each mesocosm to allow for climate warming experiments. Water temperature in warmed mesocosms can be increased by up to 5 degrees C above the ambient water temperatures, controlled by a custom computer program. To prevent thermal stratification, purpose-built mixers suspended in the middle of the mesocosm, can be moved slowly up and down through the water column. The mixers are controlled by data loggers and can be operated on different mixing regimes. All mesocosms are equipped with automatic sensors measuring temperature, dissolved oxygen and photosynthetically active radiation (PAR) every 5 minutes. A weather station within the mesocosm compound measures wind speed, wind direction, precipitation, air temperature, barometric pressure and relative humidity, logged at five minute intervals. All data is logged by a data logger and directly transferred to a server. +","Lancaster University B&B +","https://www.ceh.ac.uk/our-science/research-facility/aquatic-mesocosm-facility +"," + + + +Photo credits: Heidrun Feuchtmayr + + + + +Photo credits: Heidrun Feuchtmayr + + + + +Figure credits: Heidrun Feuchtmayr + + + + +","['http://mesocosm.org/wp-content/uploads/2019/07/IMG_5163-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2019/07/IMG_5156-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2019/07/CAMF-schematic.jpg']",,,,"['54.014373', ' -2.777004']","{'coordinates': ['54.014373', '-2.777004']}",, +https://mesocosm.org/mesocosm/experimental-mesocosm-facility-at-friday-harbor-labs-fhl/,Experimental Mesocosm Facility at Friday Harbor Labs (FHL),University of Washington,USA,North-America,"University of Washington + School of Oceanography + 1503 NE Boat Street + Seattle, WA  98105 + USA +","Prof. James Murray + Please login or request access to view contact information. +",2011-present,"outdoor/indoor – pelagic – marine + Outdoor in-water Mesocosms – FHL Dock: + This facility includes a floating dock with attachments for nine 2000 L plastic bags (~1 m diameter, 3 m depth). Within these bags, chemistry can be manipulated with the addition of CO2-saturated water as well as nutrients, etc. + Indoor Mesocosms-Lab 12: + The lab is supplied with conditioned water from a custom filtration and CO2 stripping system supplied by the FHL seawater source. Manipulative experiments are conducted in custom designed mixing reservoirs (white Igloo coolers). Each mixing reservoir has a recirculating pump and venturi injector which constantly aerates the water with CO2-free air. The water is circulated through a chilling loop as well. Water chemistry is monitored by a Honeywell Durafet pH electrode in each reservoir connected to Honeywell UDA2182 process controller. This controller adds CO2 to the stream of CO2-free air to achieve the desired pH setpoint (range from ~8.2 to below 7.0) and a separate temperature controller activates a submersed heater to achieve the desired temperatures (range from ~8°C to 25°C) +","independently controlled pH, CO2, temperature conditions, and nutrients +","CO2 increase, ocean acidification, global warming, eutrophication +"," + + + + + 48.5466503,-123.0127619 + +",,," + + +The teaching and research laboratories consist of eight one-story buildings of about 1,500 square feet each and three larger two-story research buildings. Running sea water, free from metallic contamination, is delivered to plexiglass aquaria and water tables through polyethylene or PVC pipes and fittings. Walk-in cold rooms, a microtechnique room, and a shop are available. Analytical equipment for general use includes centrifuges, computers, scintillation counter, particle counter, a high performance liquid chromatograph, nucleotide sequencer, PCR thermocyclers and other equipment for molecular biology, spectrophotometers, culture chambers, fluorescence microscope, video equipment, scanning laser confocal microscope, and electrophysiological equipment. A scanning electron microscope and transmission electron microscope may be used by investigators who have or can obtain appropriate training. + + + +","Kitchen units: The following shared housekeeping facilities on campus are available for rent to visiting researchers, faculty and graduate students pursuing independent study or working as a research/teaching assistant: twelve apartments with studio, one-, two- and three-bedroom units, twelve cottages, eight duplex units, and sixteen rooms in FHL’s graduate housing facility. All units include basic furniture and are equipped with dishes, silverware, and pots and pans. Space is assigned as available. Course instructors have high priority in the assignment of housekeeping units. + Non-Kitchen Units: Dormitories and huts are non-housekeeping units. Central washroom and toilet facilities are available to the occupants. Spring, Summer and Autumn Quarter occupants of these units must subscribe to a full meal plan at the Dining Hall. Dormitory rooms are mostly double occupancy with a few single occupancy. Beds, dressers and desks are provided. Fifteen wooden huts accommodate one or two persons each. All are provided with electric light and heat, double bed, dresser and desk. Space is assigned as available. + Miscellaneous: Laundry facilities include metered washers, dryers, irons and ironing boards. Visitors are encouraged to provide their own linen and bedding. Bed kits can be rented by those unable to bring their own. There are a few cribs and high chairs available for family living quarters. Advance notice is required for bedding, cribs and high chairs. + Because the laboratory grounds are a biological preserve, cats and dogs are not allowed. Those who wish to bring pets must seek housing off-campus or board their pets at local kennels. + Bicycles are a practical means of travel to town and around campus. As a result of a generous gift from an FHL friend, there are several bicycles available that may be checked out for periods of a few days or weeks, on the condition they are returned in good order. +","http://depts.washington.edu/fhl/oael.html +"," + + + + +Outdoor in-water Mesocosms – FHL Dock +  +The large in-water mesocosms are ideal for monitoring short term responses of natural plankton communities to seawater perturbations. + + + + + + + + + +Indoor Mesocosms-Lab 12 +The lab is supplied with conditioned water from a custom filtration and CO2 stripping system supplied by the FHL seawater source. This produces water that has been filtered (0.2 µm), UV sterilized and stripped of CO2, to generally less than 300 µatm. + + + + + + + + + +","['http://mesocosm.org/wp-content/uploads/2017/05/outdoor-oalab4-300x129.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/indoor-oalab3.jpg']",,,,"['48.5466503', '-123.0127619']","{'coordinates': ['48.5466503', '-123.0127619']}",, +https://mesocosm.org/mesocosm/mekjarvik-research-station/,Mekjarvik Research Station,International Research Institute of Stavanger (IRIS),Norway,Europe,"IRIS +P. O. Box 8046, 4068 Stavanger, (mailing address) +Prof. Olav Hanssensvei 15, 4021 Stavanger (visiting address) +Telephone: (+47) 51 87 50 00 +Fax: (+47) 51 87 52 00 +E-mail: firmapost@iris.no +","Dr. Thorleifur Agustsson: +Please login or request access to view contact information.Thorleifur.Agustsson@iris.noPlease login or request access to view contact information. +",1995-present,"Pelagic/Benthic and Marine/Freshwater +  +Facilities have been tailored for conducting studies targeting a range of marine conditions from temperate to Arctic and surface waters to deep sea. The centre includes 620 m2 of laboratories, all with access to a continuous supply of filtered seawater pumped from 80 m depth from the fjord adjacent to the laboratory. Recently fitted sophisticated heat exchange systems supply multiple seawater temperatures to support several independent experiments simultaneously or for use within single experiments facilitating multi-stressor studies. +  +Experimental facility divided into 2 parts (see pictures): + +Pilot hall for large scale experiments that include pelagic enclosures of different sizes to conduct exposure studies with organisms varying from zooplankton larvae to adult fish. Additionally, benthic chambers of different sizes, each equipped with lids holding a stirrer, optodes, special injector and sampling ports are available for use in either the pilot hall or climate rooms. +6 climate rooms are available for more specific incubations requiring strict regulation of both air and water temperature. Climate rooms all with control of light and temperature (-1 to +40 °C). + +  +","Continuous supply of fresh seawater taken from the adjacent fjord below the thermocline (80 m water depth) passing through double sand filters The parameters that can be controlled (single or multiple) include: + +Finer filtering of incoming water (filters of different size). +Multiple water temperature within a single experiment +Multiple monitored range in water oxygenation within a single experiment. +Multiple monitored range in water pH within a single experiment. + +Multiple monitored concentration of crude oil additions (dissolved or oil droplets) in water within a single experiment. +","At IRIS Mekjarvik Research Station, there is a strong focus on high quality laboratory exposure/manipulation experiments (pelagic and benthic mesocosm setups) aimed at understanding the impact of predicted climate change and anthropogenic activity on key pelagic and benthic players and processes in the marine and freshwater ecosystem. Research funding from the Industry, Research council of Norway and the EU.  Recently addressed research topics include: +– Impact of crude oil on Cod and Salmon (Research council of Norway with National & International partners) +– On the sensitivity of Krill to oil exposure (Research council of Norway with National & International partners) +– Multi-Stressor (ocean acidification & temperature) experiment with Shrimp (Research council of Norway with National & International partners) +– Impact of mine tailings on seafloor structure and functioning (EU & Research council of Norway, with National & International partners) + – Impact of Crude oil on pelagic microbial biodiversity (Research council of Norway with National & International partners) +– Impact of drill-cuttings on Corals & Sponges (Research council of Norway with National & International partners) +– CCS: Impact of CO2 seepage behavioral traits in benthic invertebrates (Research council of Norway with National & International partners) +"," + + + + + 59.0206314, 5.6159267000000455 + +",,,"The laboratory facilities of IRIS Mekjarvik Research Station provide a modern infrastructure for biological testing and analyses. Our laboratory facilities include: +Ecotoxicology, Histology, Chemistry, Proteomics, Microbiology, Molecular Biology and Microscopy/Image Analysis. +Collection of pelagic or benthic components: rental of boat with high quality sampling devices.  +","No in-house lodging. Hotel rooms and rental of houses or apartments are available in the vicinity. +","http://www.iris.no/research/environment +"," + + + +Photo: Leon Moodley + + + + +Photo. Leon Moodley + + + + +Photo: Leon Moodley + + + + +  +","['http://mesocosm.org/wp-content/uploads/2018/04/Stavanger-1-300x279.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/Stavanger-2-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/Stavanger-3-300x200.jpg']",,,,"['59.0206314', ' 5.6159267000000455']","{'coordinates': ['59.0206314', '5.6159267000000455']}",, +https://mesocosm.org/mesocosm/mesocosms-at-the-upper-parana-river-nupelia-field-station/,Mesocosms at the Upper Paraná River (Nupélia Field Station),Universidade Estadual de Maringá – UEM,Brazil,South America,"Av. Colombo 5790, Maringá, PR, Brazil, 87020-900 +","Roger Paulo Mormul +Please login or request access to view contact information. +",Predicted to be ready in 2020,"The mesocosms are located in the shore of the Upper River Paraná in Brazil. They are installed in a field station with boats, lodges for ca. 20 persons, kitchen all other facilities (e.g., aquaria, laboratories to work the samples etc.). +","Previous experiments using these facilities have controlled the presence of invasive species, habitat complexity, water chemistry and water level among others, but it is not possible to control temperature in the mesocosms. +","Effects of invasive species on native communities, mechanisms that make ecosystems to resist to invasions, top-down and bottom up mechanisms in freshwater food webs, among others. +"," + + + + + -22.765525,-53.2572166 + +","Ecology of invasive species, food webs. +","Ecology and systematic of phytoplankton, zooplankton, macrophytes, invertebrates and fish. +","Equipment to measure basic water parameters (pH, turbidity, oxygen and temperature). Possibility to measure water nutrients. +","Lodge for 20 persons + four individual chalet enough for two persons each. +","www.nupelia.uem.br +"," + + + + + + + + + +","['http://mesocosm.org/wp-content/uploads/2019/03/Mesocosmos-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Fieldstation-300x224.png']",,,,"['-22.765525', '-53.2572166']","{'coordinates': ['-22.765525', '-53.2572166']}",, +https://mesocosm.org/mesocosm/sites-aquanet-asa-research-station/,SITES AquaNet – Asa Research Station,SITES and Swedish University of Agricultural Sciences,Sweden,Europe,"Sveriges lantbruksuniversitet (SLU) +Unit for Field-based Forest Research +Asa Research Station +SE-363 94 Lammhult +Sweden +","Martin Ahlström +Please login or request access to view contact information. +",2017 - present," +Outdoor, freshwater, deployed in an adaptable jetfloat, placed in the lake Feresjön, 2,5 km from the research station. +PE-film enclosures or 20 hardshell PE enclosures (ø = 0.9 m, depth = 1.5 m, volume = 700 l). +Open access to national and international researchers. + +",,"Advanced general understanding in ecology by using modularized experiments across SITES-AquaNet stations (Sweden) or potential collaborators (Sweden, Europe and other continents). Topics: biodiversity-functioning-stability relationships, community ecology, ecological stoichiometry, food web interactions, benthic-pelagic dynamics, biochemistry (carbon cycling), cyanobacterial blooms and global change research. Possibility to combine mechanistic experiments with lake monitoring data from Feresjön (e.g., phytoplankton, zooplankton, nutrients and on-site climate data, incl. temperature profile measurements). +"," + + + + + 57.164325, 14.782712 + +",,,"Apogee SQ-500 (PAR), CTG Trilux fluorometer (chlorophyll-a, phycocyanin and turbidity) and Aanderaa 4531 optode (O2 and temperature) sensors fulltime deployed in each enclosure, deployed with a Campbell CR1000 datalogger and an AM16/32B multiplexer (https://www.campbellsci.com). The datalogger has an ethernet interface for remote access through a mobile broadband router, for maintenance and data retrieval. Surveillance camera mounted for remote monitoring of the site. +An YSI ProODO instrument (DO) (https://www.ysi.com/proodo), an AP-2000 AquaRead Multiprobe (http://www.aquaread.com/portofolio/ap-2000/) equipped with a chlorophyll a sensor, and an Apogee MQ-500 (PAR) sensor with handheld meters. +Laboratory for filtering and extraction of samples for a wide range of analyses, cold storage and freezing rooms are available at the research station. Connection to laboratories for analysis at the Swedish University of Agricultural Sc.; the Geochemical laboratory (https://www.slu.se/en/departments/aquatic-sciences-assessment/laboratories/vattenlabb2/), and at the Uppsala University; the Erken Laboratory (http://www.ieg.uu.se/erken-laboratory). +","Capacity at the Asa Herrgård hotel and conference facility, neighbouring the research station; ca 60 persons (https://www.asaherrgard.se), and at the Asa Hostel, 1 km from the station: ca 60 persons, with cooking facilities (http://www.friheten.nu/en/) +","http://www.fieldsites.se/en-GB/sites-provides/sites-initiatives/sites-aquanet-32634394 +http://www.fieldsites.se/en-GB/about-sites/field-research-stations/asa-32652326 +"," + + + +Photo credit: Ola Langvall + + + + +Photo credit: Ola Langvall + + + + +  +","['http://mesocosm.org/wp-content/uploads/2018/05/Asa_1-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Asa_3-1024x574.jpg']",,,,"['57.164325', ' 14.782712']","{'coordinates': ['57.164325', '14.782712']}",, +https://mesocosm.org/mesocosm/solbergstrand-experimental-facility-sef/,Solbergstrand Experimental Facility (SEF),Norwegian Institute for Water Research,Norway,Europe,"Norwegian Institute for Water Research + NIVA Oslo + Gaustadalléen 21 + NO-0349 Oslo +","1. Hartvig Christie +2. Nikolai Friberg +1. Please login or request access to view contact information., 2. Please login or request access to view contact information. +","1. 1996 - present, 2. 2015 - present","outdoor – pelagic/benthic – marine/freshwater + 1. Solbergstrand Mesocosms: Outdoor, 12 hard bottom mesocosms, 13 m3 ambient 1 m depth sea water flow through, benthic communities from 0-1.5 m depth, ca 40 species of benthic algae, up to 90 species of macrofauna. + 23 fibreglass and concrete seawater pools with volumes ranging from 26 to 550 m3,  a number of smaller testing facilities on land, and the seabed outside the station to manipulate and control marine ecosystems. + Facilities at Solbergstrand cover: + – hard-bottom seashores + – brackish water systems + – seaweed and kelp communities + – soft-bottom sediments from clean and polluted areas + – pelagic communities from the upper water depths + – a larger system to simulate mixing zones in rivers + – testing of water treatment systems + 2. Solbergstand Flumes: Outdoor, 16 stainless steel flumes: 10 m long, 0.5 m wide and with a maximum depth of 0.5 m (depth can be increased by Plexiglas panels). Discharge can be up to 3 L/s per flume with the current set-up so the facility mimics headwater streams. Flumes are seeded with both substrate and biota prior to experimentation depending on research question. However, longer experiments (months to years), and with natural colonization from a stream that runs next to them, is possible. Each flume can be individually re-circulated or have flow through of stream water. Water sources comprise both of ground water (limited amounts and not enough for continuous flow through) and stream water that are distributed to the flumes through header tanks. +","1. Simulation of natural environmental conditions such as current wave action, water quality, water flow, tidal range, temperature, salinity, pH, nutrients, flora, fauna + 2. Master variables: Discharge, water velocity, temperature. Substrate, water chemistry and biological components can be controlled +","1. Effects of environmental conditions/stressors on flora, fauna diversity and community function and ecological community structure + 2. Reponses of stream biotic communities and ecosystem functioning to climate change and other environmental stressors +"," + + + + + 59.6157541,10.6528178 + +",,,"1. 10 laboratories for experimentation and analysis activities, among them an authorised infection lab for fish and a special lab for working with radioactive trace elements, two well-equipped workshops. Water flow regulation, wave generator, tidal regulation, temperature, salinity, pH, nutrient dosing. + 2. Pumps, thermostats, groundwater dwelling. In addition temperature loggers, light meters, velocity meters etc. +","Cottage rental, lab and facilities, kitchen and meeting room for 24 persons are also available at the station +","http://www.niva.no/en/sok?sortBy=ByRelevancy&query=Solbergstrand +oddbjoern.pettersen@niva.no +"," + + + +1. Solbergstrand Mesocosms – Schematic basin design (from Kraufvelin 2007) + + + + +1. Solbergstrand Mesocosms – concrete seawater basins (Photo: SA Berger) + + + + +2. Solbersstrand Flumes (Photo: SA Berger) + + + + +2. Solbersstrand Flumes (Photo: SA Berger) + + + + +","['http://mesocosm.org/wp-content/uploads/2017/02/Drøbak_mesocosms-construction_400px-300x176.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Solbergstrand_Mesocosms_400x1-300x221.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Solbergstrand_Flumes_400px2-300x136.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Solberstrand_Flumes_400px1-300x213.jpg']",,,,"['59.6157541', '10.6528178']","{'coordinates': ['59.6157541', '10.6528178']}",, +https://mesocosm.org/mesocosm/sletvik-field-station/,Sletvik Field Station,Norwegian University of Science and Technology,Norway,Europe,"Norwegian University of Science and Technology +Department of Biology +Trondhjem Biological Station +N-7491 Trondheim +","Anita Kaltenborn +Please login or request access to view contact information. +",,"outdoor – pelagic – marine +sea based mesocosms +","nutrients, … +","plankton dynamics +"," + + + + + 63.5929285,9.5457926 + +",,,"Two large lecturing and three smaller laboratories, one of which has access to salt water, and a meeting room. +","Accommodation for 50 people, kitchen and dining room, lounge, bedrooms, showers, washing rooms and a sauna. All meals are served at the station and normally consist of a self-service breakfast, lunch packet and dinner. The kitchen can be used in the evening by appointment with the station’s attendant chef. +","http://www.ntnu.edu/biology/sletvik-field-station +",,,,,,"['63.5929285', '9.5457926']","{'coordinates': ['63.5929285', '9.5457926']}",, +https://mesocosm.org/mesocosm/wuhan-warming-mesocosm-facility-wwmf/,Wuhan Warming Mesocosm Facility (WWMF),"1. Institute of Hydrobiology, Chinese Academy of Sciences (IHB-CAS); 2. College of Fischeries, Huazhong Agricultural University",China,Asia," +Institute of Hydrobiology, Chinese Academy of Sciences; Address: No. 7 Donghu South Road, Wuchang District, Wuhan, Hubei Province, China +Huazhong Agricultural University; Address: No. 1, Shizishan Street, Hongshan District, Wuhan, Hubei Province, China + +","Prof. Dr. Jun Xu (group leader)   Email: xujun@ihb.ac.cn +Associate Prof. Dr. Min Zhang    Email: zhm7875@mail.hzau.edu.cn +Dr. Peiyu Zhang (Scientific Coordinator)  Email: zhangpeiyu@ihb.ac.cn +",2013 - present,"There are 48 mesocosms, each with 1.45 m in height, 1.5 m in diameter and 2560 L in volume. The facility is located at an experimental base in Huazhong Agriculture University in Wuhan, a subtropical area at the middle reach of Yangtze River. Temperature can be regulated automatically by computer systems in all the mesocosms. +"," +Temperature (warming, an elevation of 4.0 °C above the ambient temperature; heatwave, a treatment with a pre-programmed fluctuating temperature ranging from 0 °C to 8 °C above ambient) +Nutrients (nitrogen and phosphorus adding) + +"," +Climate change +eutrophication +food webs +macrophytes + +"," + + + + + 30.4670833, 114.35961111111111 + +","Along the Yangtze River, hundreds of shallow lakes are over-exploited by human beings, resulting in the deterioration of the functions and services performed by these lake ecosystems. Furthermore, these shallow lakes are suffering from global climate change, under continuous warming over the last few decades and an unpredicted pattern of extreme climate events. We are interested in how climate change will affect these shallow lakes in the future, and what we can do to mitigate these effects. +"," +climate change effects on shallow freshwater ecosystems, focusing on +trophic interactions +food webs +stoichiometry +stable isotope ecology in aquatic ecosystems. + +"," +basic warming simulation mesocosms +labs for indoor controlled experiments +monitoring and analyzing of biological samples +access to the Advanced Analysis Center which belongs to IHB-CAS: all kinds of biological and chemical parameters can be analyzed. + +",,," + + + +Photo credit: Tao Wang + + + + +Photo credit: Chao Li + + + + +","['http://mesocosm.org/wp-content/uploads/2019/01/WWMF2.jpg', 'http://mesocosm.org/wp-content/uploads/2019/01/WWMF1-1024x767.jpg']",,,,"['30.4670833', ' 114.35961111111111']","{'coordinates': ['30.4670833', '114.35961111111111']}",, +https://mesocosm.org/mesocosm/kob-kiel-outdoor-benthocosms/,KOB (Kiel-Outdoor-Benthocosms),GEOMAR-Helmholtz Center for Ocean Research,Germany,Europe,"GEOMAR-Helmholtz Center for Ocean Research + West shore campus + Düsternbrooker Weg 20 + D-24105 Kiel + East shore campus + Wischhofstr. 1-3 + D-24148 Kiel +","Professor Martin Wahl (KOB) +Please login or request access to view contact information. +",,"off-shore/outdoor/indoor – pelagic/benthic – marine/brackish + Kiel Outdoor Benthocosms – KOB + outdoor – benthic – marine/brackish + Floating infrastructure consisting of sub-dividable 3500 liter tanks, optionally covered by a fully translucent hood. When the system works in a flow-through mode all in situ fluctuations are admitted to the tanks and experimental treatments represent controlled deviations (delta-treatments) from this naturally fluctuating baseline +","KOB: CO2, temperature, irradiation, nutrients, oxygen, salinity +","KOB: responses of benthic communities to environmental shifts/fluctuations in temperature, pH, pCO2, oxygen, nutrients, salinity +"," + + + + + 54.330034,10.1482026 + +",,,"KOB: insulated tanks with 12 experimental units, heaters, coolers, automated, gas mixing unit, wave generators, internal circulation system, flow through system, surface and deep water supply, programmable climate simulation +",,"http://www.geomar.de/en/ + Media report: Window on future ocean +"," + + + +KOB – Kiel Outdoor Benthocosms (Photo: Martin Wahl) + + + + +KOB – Kiel Outdoor Benthocosms (Photo: Mark Lenz) + + + + +","['http://mesocosm.org/wp-content/uploads/2017/02/KOB_2_400_Wahl_1-282x300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/KOB_3_400_Lenz-300x201.jpg']",,,,"['54.330034', '10.1482026']","{'coordinates': ['54.330034', '10.1482026']}",, +https://mesocosm.org/mesocosm/the-sven-loven-centre-for-marine-sciences/,The Sven Lovén Centre for Marine Sciences,University of Gothenburg,Sweden,Europe,"University of Gothenburg + PO Box 100, SE-405 30 Gothenburg, SWEDEN + Visiting address: Vasaparken +","Michael Klages +Please login or request access to view contact information. +",,"outdoor pelagic marine/brackish + “ecotrons” : 12 tanks (5.7 x 1.2 m) with adjustable depths + 1 channel of 7m and 1 to 1.5 m of water with recirculation +","control turbulence, temperature, salinity, sedimentation, nutritional conditions, light +","study of gene function, ecotoxicology, development, physiology, virology etc. +"," + + + + + 58.2498484,11.4449296 + +",,,"Laboratory of Marine Chemistry, molecular biology, genetics, living producing algae +",,"www.loven.gu.se + +  +"," + + + + +ecotrons + + + + +",['http://mesocosm.org/wp-content/uploads/2017/05/marine-ecotron.jpg'],,,,"['58.2498484', '11.4449296']","{'coordinates': ['58.2498484', '11.4449296']}",, +https://mesocosm.org/mesocosm/medimeer-mediterranean-platform-for-marine-ecosystem-experimental-research/,MEDIMEER (MEDIterranean platform for Marine Ecosystem Experimental Research),CNRS,France,Europe,"MEDIMEER +2 Rue des Chantiers +34200, Sète +France +  +http://www.medimeer.univ-montp2.fr/ +","Dr. Behzad Mostajir +Please login or request access to view contact information. +",Since 2003,"Pelagic, marine, outdoor, in-situ + 1. Permanent floating structure: up to 12 pelagic mesocosms (1.2 m diameter, 2 m depth, ~2 m3 volume each). Fig. 1 & 2 + 2. Permanent floating structure: 3. Indoor structure: + 3. Mobile: LAMP is composed of 9 individual structures that can be deployed individually or bonded according to experimental design. Fig. 3 +","CO2, pH, nutrients, plankton composition, temperature, light, salinity, turbulence, conductivity, chlorophyll a fluorescence and dissolved oxygen concentration. Some of The data are stored and transmit in real time +","Plankton food web structure and functioning and their responses to global and local stressors. +"," + + + + + 43.4118721,3.6907914 + +","Interactions between planktonic organisms and changes in structure and function of planktonic food web. +","Effects of warming, increase of ultraviolet-B radiation and pH on planktonic food web. +","Available equipment and instruments include a spectrofluorimeter, a spectrophotometer with an integrating sphere, an oxygen titrator, an autoanalser for dissolved nutrients, a flow cytometer (FacsCalibur), an epifluorescence microscope, dissecting microsopes, and various benchtop instruments (peristaltic pumps, vacuum pumps, filtration sets, liquid nitrogen container, balances, incubators, drying ovens, cooled centrifuges, hoods, etc.) +Analytical platform, isotope laboratory, cold rooms, physical instrumentation (Conductivity, Temp, O2, pH), optical (fluorescence), biological (phytoplankton measures), biophysics (fluorimeter, spectrophotometer) +","Dormitories at the Marine Station of Sète   or possibility to rent the hotel rooms or a villa. +","http://www.medimeer.univ-montp2.fr/ +"," + + + +Fig.1 Permanent floating structure (Photo- Dr. Behzad Mostajir) + + + + +Fig.2 Pelagic mesocosms (Photo- Dr. Behzad Mostajir) + + + + +Fig.3 LAMP in Dia Island, Crete (Photo: Dr. Behzad Mostajir) + + + + +","['http://mesocosm.org/wp-content/uploads/2017/03/Fig.1-Permanent-floating-structure-Photo-Dr.-Behzad-Mostajir.png', 'http://mesocosm.org/wp-content/uploads/2017/03/Fig.2-Pelagic-mesocosms-Photo-Dr.-Behzad-Mostajir.png', 'http://mesocosm.org/wp-content/uploads/2017/02/LAMP-300x129.png']",,,,"['43.4118721', '3.6907914']","{'coordinates': ['43.4118721', '3.6907914']}",, +https://mesocosm.org/mesocosm/rsd-facility/,RSD Facility,Faculty of Food Sciences and Fisheries,Poland,Europe,"Kazimierza Królewicza 4, 71550 Szczecin, Poland +","Remigiusz Panicz +Please login or request access to view contact information. +",More than 30 years (since 1985)," +120 cages (volume 3 cubic meters) submerged in a channel receiving post-cooling water from the Dolna Odra power plant (north-western Poland) +Double tent with 5 independent RAS or flow-through systems +Experimental aquaponics system +Hatchery (artificial breading, hatching and raring of through the early life stages) +Species: common carp, African catfish, goldfish, tench, sturgeons, other Cyprinids incl. ornamental varieties + +"," +Temperature, DO, pH (RAS) +Fish density +Flow rate + +"," +Feed design and fish trials +Fish disease detection (molecular methods, histology) +Marker assisted selection  + +"," + + + + + + + + + 53.209861,14.463944;53.44505,14.562861 + +","Aquaculture in RAS and cages +","Fish nutrition, Feed design, Epidemiology, Genetics, Molecular biology +","Fully equipped and operating hatchery, RAS, cage systems and laboratory +","Yes (basic conditions) +","https://wnozir.zut.edu.pl/index.php?id=3590 +Direct contact through e-mail +Panicz R., Sadowski J., Eljasik P. 2019. Detection of Cyprinid herpesvirus 2 (CyHV-2) in symptomatic ornamental types of goldfish (Carassius auratus) and asymptomatic common carp (Cyprinus carpio) reared in warm-water cage culture. Aquaculture. 504: 131-138. DOI:10.1016/j.aquaculture.2019.01.065 +Panicz R., Drozd R., Drozd A., Nędzarek A. 2017. Species and sex-specific variation in antioxidant status of tench (Tinca tinca), well catfish (Silurus glanis) and sterlet (Acipenser ruthenus) reared in cage culture. Acta Ichthyologica et Piscatoria. 47(3): 213-223. DOI: 10.3750/AEIP/02093 +Panicz R., Klopp C., Igielski R., Hofsoe P., Sadowski J., Coller Jr. J.A. 2017. Tench (Tinca tinca) high-throughput transcriptomics reveal feed dependent gut profiles. Aquaculture. 479: 200-207. DOI: 10.1016/j.aquaculture.2017.05.047 +Panicz R., Żochowska-Kujawska J., Sadowski J., Sobczak M. 2017. Effect of feeding various levels of poultry by-product meal on the blood parameters, filet composition and structure of female tenches (Tinca tinca). Aquaculture Research. 48: 5373-5384. DOI: 10.1111/are.13351 +Nguyen T.T., Jin Y., Kiełpińska J., Bergmann S.M., Lenk M., Panicz R. 2017. Detection of Herpesvirus anguillae (AngHV-1) in European eel Anguilla anguilla (L.) originating from northern Poland-assessment of suitability of selected diagnostic methods. Journal of Fish Dieseases 1717-1723. DOI: 10.1111/jfd.12689 +Drozd R., Panicz R., Jankowiak D., Hofsoe P., Drozd A., Sadowski J. 2014. Antoxidant enzymes in the liver and gills of Tinca tinca from various water bodies. Journal of Applied Ichthyology. 30: 2–6. DOI: 10.1111/jai.12420. +Panicz R., Hofsoe P., Sadowski J., Mysłowski B., Półgęsek M. 2013. Morphometric and molecular characterisation of Cyprinus carpio × Carassius auratus hybrids. Aquaculture International. 21(4): 751-758. DOI: 10.1007/s10499-012-9577-6 +Kempter J., Kiełpiński M., Panicz R., Sadowski J., Mysłowski B., Bergmann S. M. 2012. Horizontal transmission of koi herpes virus (KHV) from potential vector species to common carp. Bulletin of the European Association of Fish Pathologists., 32(6): 212-219. +"," + + + + + + + + + + + + + + + + + + + + + +","['http://mesocosm.org/wp-content/uploads/2019/03/RSD-Facility-300x177.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-69-of-76-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-22-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-20-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-19-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/PART_1548849527972-225x300.jpeg']",,,,"['53.209861', '14.463944']","{'coordinates': ['53.209861', '14.463944']}",, +https://mesocosm.org/mesocosm/rsd-facility/,RSD Facility,Faculty of Food Sciences and Fisheries,Poland,Europe,"Kazimierza Królewicza 4, 71550 Szczecin, Poland +","Remigiusz Panicz +Please login or request access to view contact information. +",More than 30 years (since 1985)," +120 cages (volume 3 cubic meters) submerged in a channel receiving post-cooling water from the Dolna Odra power plant (north-western Poland) +Double tent with 5 independent RAS or flow-through systems +Experimental aquaponics system +Hatchery (artificial breading, hatching and raring of through the early life stages) +Species: common carp, African catfish, goldfish, tench, sturgeons, other Cyprinids incl. ornamental varieties + +"," +Temperature, DO, pH (RAS) +Fish density +Flow rate + +"," +Feed design and fish trials +Fish disease detection (molecular methods, histology) +Marker assisted selection  + +"," + + + + + + + + + 53.209861,14.463944;53.44505,14.562861 + +","Aquaculture in RAS and cages +","Fish nutrition, Feed design, Epidemiology, Genetics, Molecular biology +","Fully equipped and operating hatchery, RAS, cage systems and laboratory +","Yes (basic conditions) +","https://wnozir.zut.edu.pl/index.php?id=3590 +Direct contact through e-mail +Panicz R., Sadowski J., Eljasik P. 2019. Detection of Cyprinid herpesvirus 2 (CyHV-2) in symptomatic ornamental types of goldfish (Carassius auratus) and asymptomatic common carp (Cyprinus carpio) reared in warm-water cage culture. Aquaculture. 504: 131-138. DOI:10.1016/j.aquaculture.2019.01.065 +Panicz R., Drozd R., Drozd A., Nędzarek A. 2017. Species and sex-specific variation in antioxidant status of tench (Tinca tinca), well catfish (Silurus glanis) and sterlet (Acipenser ruthenus) reared in cage culture. Acta Ichthyologica et Piscatoria. 47(3): 213-223. DOI: 10.3750/AEIP/02093 +Panicz R., Klopp C., Igielski R., Hofsoe P., Sadowski J., Coller Jr. J.A. 2017. Tench (Tinca tinca) high-throughput transcriptomics reveal feed dependent gut profiles. Aquaculture. 479: 200-207. DOI: 10.1016/j.aquaculture.2017.05.047 +Panicz R., Żochowska-Kujawska J., Sadowski J., Sobczak M. 2017. Effect of feeding various levels of poultry by-product meal on the blood parameters, filet composition and structure of female tenches (Tinca tinca). Aquaculture Research. 48: 5373-5384. DOI: 10.1111/are.13351 +Nguyen T.T., Jin Y., Kiełpińska J., Bergmann S.M., Lenk M., Panicz R. 2017. Detection of Herpesvirus anguillae (AngHV-1) in European eel Anguilla anguilla (L.) originating from northern Poland-assessment of suitability of selected diagnostic methods. Journal of Fish Dieseases 1717-1723. DOI: 10.1111/jfd.12689 +Drozd R., Panicz R., Jankowiak D., Hofsoe P., Drozd A., Sadowski J. 2014. Antoxidant enzymes in the liver and gills of Tinca tinca from various water bodies. Journal of Applied Ichthyology. 30: 2–6. DOI: 10.1111/jai.12420. +Panicz R., Hofsoe P., Sadowski J., Mysłowski B., Półgęsek M. 2013. Morphometric and molecular characterisation of Cyprinus carpio × Carassius auratus hybrids. Aquaculture International. 21(4): 751-758. DOI: 10.1007/s10499-012-9577-6 +Kempter J., Kiełpiński M., Panicz R., Sadowski J., Mysłowski B., Bergmann S. M. 2012. Horizontal transmission of koi herpes virus (KHV) from potential vector species to common carp. Bulletin of the European Association of Fish Pathologists., 32(6): 212-219. +"," + + + + + + + + + + + + + + + + + + + + + +","['http://mesocosm.org/wp-content/uploads/2019/03/RSD-Facility-300x177.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-69-of-76-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-22-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-20-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-19-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/PART_1548849527972-225x300.jpeg']",,,,"['53.44505', '14.562861']","{'coordinates': ['53.44505', '14.562861']}",, +https://mesocosm.org/mesocosm/gault-nature-reserve-mesocosm-platform/,Gault Nature Reserve Mesocosm Platform,McGill University,Canada,North America,"845 Sherbrooke St W +Montreal +QC H3A 0G4 +Canada +","Gregor Fussmann (PI), Please login or request access to view contact information. +David Maneli (Associate Director of Gault Nature Reserve) Please login or request access to view contact information. +",2012 - present,"A floating platform contains 8 arrays of 4 rings of a ~1 m diameter (i.e., maximal capacity = 32 mesocosms), which can be used to suspend polyethylene bags in the lake. Lake mesocosms can vary in depth, with the maximal lake depth at this location being ~7 m. Electrical wires are fed underneath the platform, with one electrical outlet providing a limited amount of power for each pair of rings. Gas tubing has also been fed under the platform. The floating dock is connected to the shore via a floating walkway. +The lake mesocosm platform is located in Lac Hertel at the Gault Nature Reserve. The watershed is fully forested and the surrounding park is owned by the University. However, the mesocosm platform is located within a part of the park that is off-limits to visitors. The access to the platform itself is protected via a fence, and there is a security camera. +A car or truck can reach 100 m away from the mesocosm platform. However, a golf cart, wagon or canoe can be borrowed to bring equipment to the platform. +The platform is not wheelchair accessible due to the presence of three steps. +"," +pH +DOC +Temperature +CO­2 +Nitrate +Phosphate +Zooplankton + +"," +Seasonal limnology +rapid evolution +plankton resource limitation and responses to environmental change +winter limnology +food web dynamics and processes + +"," + + + + + 45.543060, -73.150762 + +",,," +A permanent, long-term monitoring buoy is being installed in the lake about 100m from the mesocosm site, and data will be available via the Gault Nature Reserve. +Tubing for CO2 bubbling and mixing +Ice auger +Life jackets +An equipment storage cabin 100 m away is available for researchers +A lab space with running water and a fume hood is available ~1km away from the mesocosm platform + +","Researchers can stay on-site (~1 km from the platform) in cabins with bunk beds. +","https://gault.mcgill.ca/en/research-and-education/research/ +"," + + + +Photo credit: Gregor Fussmann + + + + +Photo credit: Egor Katkov + + + + +Photo credit: Gregor Fussmann + + + + +Photo credit: Egor Katkov + + + +  + + + +","['http://mesocosm.org/wp-content/uploads/2019/08/Gault-Mesocosms-4-credit-Gregor-Fussmann-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2019/08/Gault-Mesocosms-2-credit-Egor-Katkov-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2019/08/Gault-Mesocosms-5-credit-Gregor-Fussmann-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2019/08/Gault-Mesocosms-3-credit-Egor-Katkov-1024x576.jpg']",,,,"['45.543060', ' -73.150762']","{'coordinates': ['45.543060', '-73.150762']}",, +https://mesocosm.org/mesocosm/silwood-mesocosm-facility-smf/,Silwood Mesocosm Facility (SMF),Imperial College London,United Kingdom,Europe,"Silwood Park Campus, Imperial College London, Ascot, UK +","Prof. Guy Woodward, Please login or request access to view contact information.;  +Dr. Michelle Jackson,Please login or request access to view contact information.m.jackson@imperial.ac.ukPlease login or request access to view contact information.; +Dr. Emma Ransome,Please login or request access to view contact information.e.ransome@imperial.ac.ukPlease login or request access to view contact information. +",Started 2016,"96 freshwater mesocosms, 32 more coming in 2017 +","Temperature, drought +","Climate change, Food webs, Biochemistry, Microbial Ecology +"," + + + + + 51.51772460,-0.17322940 + +",,,,"Accommodation is on site in private rooms with shared kitchen facilities. Silwood Park is close to Sunningdale which has shops and rail station with direct links to central London. +",," + + + + + + + + + +","['http://mesocosm.org/wp-content/uploads/2017/03/SMF-1.png', 'http://mesocosm.org/wp-content/uploads/2017/03/SMF-2.jpg']",,,,"['51.51772460', '-0.17322940']","{'coordinates': ['51.51772460', '-0.17322940']}",, +https://mesocosm.org/mesocosm/exstream-system-china/,ExStream System China,Xi'an Jiaotong-Liverpool University,China,Asia,"Xi’an Jiaotong-Liverpool University 111 Ren’ai Road, +Suzhou Dushu Lake Science and Education Innovation District Suzhou Industrial Park +Suzhou, Jiangsu Province, +China 215123 +","Assoc. Prof. Yixin Zhang +ExStream network coordinator Asst. Prof. Jeremy J. Piggott +  +Yixin.Zhang@xjtlu.edu.cn +jeremy.piggott@tcd.ie +",operational since 2018,"The ExStream System comprises 128 circular stream mesocosms offering strict control of experimental variables, excellent statistical power and a high degree of realism, such as permitting natural immigration and emigration of stream organisms (invertebrates, algae and microbes) and achieving the same ambient temperature, light conditions and water chemistry as the adjoining river/stream. The mesocosms are arranged in eight blocks of 16 units each, and each of these blocks is continuously supplied by stream water gravity-fed from one of eight header tanks via 16 individual supply pipes. +  +The Experimental Stream mesocosm network (ExStream) comprises replicate installations in New Zealand, China, Japan, Germany and Ireland and is coordinated by Asst. Prof. Jeremy J. Piggott at Trinity College Dublin (jeremy.piggott@tcd.ie).   +"," +Nutrients +Sediments +Flow velocity +Temperature + +","The effects of multiple stressors on benthic macroinvertebrate communities and ecosystem functioning in streams +"," + + + + + 31.276111, 120.7325; 30.118056, 118.023889 + +","Benthic macroinvertebrate communities and ecosystem functioning in streams: Responses to multiple stressors’ impact. +","Stream Ecology, Community ecology +","At the location of Xi’an Jiaotong-Liverpool University, there are a complete set of lab facilities +","present for both locations +","Assoc. Prof. Yixin Zhang (http://www.xjtlu.edu.cn/en/departments/academic-departments/environmental-science/staff/yixin-zhang) +"," + + + +Photo credit: Noel Juvigny-Khenafou + + + + +Photo credit: Noel Juvigny-Khenafou + + + + +Photo credit: Noel Juvigny-Khenafou + + + + +Figure credit: Jeremy (Jay) Piggott + + + + +","['http://mesocosm.org/wp-content/uploads/2018/10/34498B12-BD94-4312-8FFD-C92FA6BA75D4@tcd.ie_-e1540461299359-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/54889AEB-229B-40CC-8773-52FAD7DE72D2@tcd.ie_-e1540461322675-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/F8410BFC-4161-4E95-9D6E-A1CBDECD2109@tcd.ie_-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"['31.276111', ' 120.7325']","{'coordinates': ['31.276111', '120.7325']}",, +https://mesocosm.org/mesocosm/exstream-system-china/,ExStream System China,Xi'an Jiaotong-Liverpool University,China,Asia,"Xi’an Jiaotong-Liverpool University 111 Ren’ai Road, +Suzhou Dushu Lake Science and Education Innovation District Suzhou Industrial Park +Suzhou, Jiangsu Province, +China 215123 +","Assoc. Prof. Yixin Zhang +ExStream network coordinator Asst. Prof. Jeremy J. Piggott +  +Yixin.Zhang@xjtlu.edu.cn +jeremy.piggott@tcd.ie +",operational since 2018,"The ExStream System comprises 128 circular stream mesocosms offering strict control of experimental variables, excellent statistical power and a high degree of realism, such as permitting natural immigration and emigration of stream organisms (invertebrates, algae and microbes) and achieving the same ambient temperature, light conditions and water chemistry as the adjoining river/stream. The mesocosms are arranged in eight blocks of 16 units each, and each of these blocks is continuously supplied by stream water gravity-fed from one of eight header tanks via 16 individual supply pipes. +  +The Experimental Stream mesocosm network (ExStream) comprises replicate installations in New Zealand, China, Japan, Germany and Ireland and is coordinated by Asst. Prof. Jeremy J. Piggott at Trinity College Dublin (jeremy.piggott@tcd.ie).   +"," +Nutrients +Sediments +Flow velocity +Temperature + +","The effects of multiple stressors on benthic macroinvertebrate communities and ecosystem functioning in streams +"," + + + + + 31.276111, 120.7325; 30.118056, 118.023889 + +","Benthic macroinvertebrate communities and ecosystem functioning in streams: Responses to multiple stressors’ impact. +","Stream Ecology, Community ecology +","At the location of Xi’an Jiaotong-Liverpool University, there are a complete set of lab facilities +","present for both locations +","Assoc. Prof. Yixin Zhang (http://www.xjtlu.edu.cn/en/departments/academic-departments/environmental-science/staff/yixin-zhang) +"," + + + +Photo credit: Noel Juvigny-Khenafou + + + + +Photo credit: Noel Juvigny-Khenafou + + + + +Photo credit: Noel Juvigny-Khenafou + + + + +Figure credit: Jeremy (Jay) Piggott + + + + +","['http://mesocosm.org/wp-content/uploads/2018/10/34498B12-BD94-4312-8FFD-C92FA6BA75D4@tcd.ie_-e1540461299359-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/54889AEB-229B-40CC-8773-52FAD7DE72D2@tcd.ie_-e1540461322675-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/F8410BFC-4161-4E95-9D6E-A1CBDECD2109@tcd.ie_-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"[' 30.118056', ' 118.023889']","{'coordinates': ['30.118056', '118.023889']}",, +https://mesocosm.org/mesocosm/exstream-system-ireland/,ExStream System Ireland,University College Dublin in collaboration with Trinity College Dublin,Ireland,Europe,"Belfield, Dublin 4 +","Assoc. Prof. Mary Kelly-Quinn +ExStream network coordinator Asst. Prof. Jeremy J. Piggott +  +mary.kelly-quinn@ucd.ie +jeremy.piggott@tcd.ie +","2016 present, A number of UCD/TCD projects will use the facility over the next three years (-2020).","The ExStream System comprises 128 circular stream mesocosms offering strict control of experimental variables, excellent statistical power and a high degree of realism, such as permitting natural immigration and emigration of stream organisms (invertebrates, algae and microbes) and achieving the same ambient temperature, light conditions and water chemistry as the adjoining river/stream. The mesocosms are arranged in eight blocks of 16 units each, and each of these blocks is continuously supplied by stream water gravity-fed from one of eight header tanks via 16 individual supply pipes. +The facility is mobile, currently housed in University College Dublin. +The Experimental Stream mesocosm network (ExStream) comprises replicate installations in New Zealand, China, Japan, Germany and Ireland and is coordinated by Asst. Prof. Jeremy J. Piggott at Trinity College Dublin (jeremy.piggott@tcd.ie).   +","Flow, can manipulate nutrient, sediment and other stressors +","Impact of multiple stressors & climate change on aquatic communities and ecosystem processes +"," + + + + + 53.307444, -6.227611 + +","Stream biodiversity and ecosystem function +","Multiple stressors and climate change +","Basic equipement. For detailed information please, mesage facility contacts. +","None +","Assoc. Prof. Mary Kelly-Quinn (http://www.ucd.ie/research/people/biologyenvscience/drmarykelly-quinn/) +Asst. Prof. Jeremy J. Piggott (https://www.tcd.ie/Zoology/research/groups/piggott/) +ExStream Ireland video:  https://youtu.be/OUeL_ePRq8A +"," + + + +Photo credit: Matthew Rose-Nel + + + + +Photo credit: Matthew Rose-Nel + + + + +Figure credit: Jeremy (Jay) Piggott + + + + +  +","['http://mesocosm.org/wp-content/uploads/2018/05/IMG_1176-683x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/DJI_0011-1024x575.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"['53.307444', ' -6.227611']","{'coordinates': ['53.307444', '-6.227611']}",, +https://mesocosm.org/mesocosm/lunz-mesocosm-infrastructure-lmi/,Lunz Mesocosm Infrastructure (LMI),WCL - WasserCluster Lunz,Austria,Europe,"1) WCL – WasserCluster Lunz + Dr. Carl Kupelwieser Promenade 5 + A-3293 Lunz am See + 2) Institute of Hydrobiology and Aquatic Ecosystem Management (IHG) + University of Natural Resources and Life Sciences (BOKU) + Max-Emanuel-Straße 17 + 1180 Wien +","1A) Dr. Robert Ptacnik + 1B) Dr. Martin Kainz + 2) Ao.Univ.Prof. Dipl.-Ing. Dr. Stefan Schmutz, + Dipl.-Ing. Stefan Auer +1)Please login or request access to view contact information.2)Please login or request access to view contact information., Please login or request access to view contact information. +",1) 2012 - present 2) 2011 - present,"1A) WCL-Mesocosms-Ptacnik + 40 land-based mesososms (320 L each); water pipes for aeration and mixing; exchangeable inner walls; app. 500 m from lake; local tab water suitable for experiments (not chlorinated) + 1B) WCL-Mesocosms-Kainz + 24 land-based mesososms (400 L each), temperatured controlled, aerated, temperature sensors, remote controlled + 2) HyTEC + consists of two large channels (40 m length, 6 m width) fed with nutrient-poor lake water taken at different depths to vary water temperature. Peak flows of up to 600 l/s are produced to mimic hydropeaking, thermopeaking or extreme floods. + Channel size and morphology (slopes, structures substratum, etc.) is alterable, flow can be controlled, various experiments with different biological elements (fish, benthic invertebrates, algae, etc.) can be conducted in parallel (smaller sub-flumes within each large one) short-time and long-time experiments can be done simultaneously +","1A) WCL-Mesocosms-Ptacnik + Air flow; possibly shading; nutrient levels + 1B) WCL-Mesocosms-Kainz + Temperature, air flow + 2) HyTEC + Discharge, ramping rates of discharge, water temperature, substrate, channel morphology +","1A) WCL-Mesocosms-Ptacnik + Role of dispersal for maintenance of diversity; diversity-functioning research in plankton communities + 1B) WCL-Mesocosms-Kainz + Effects of temperature, heat waves, light, brownification on phytoplankton and zooplankton biodiversity and biochemical composition (elemental stoichiometry, fatty acids) + 2) HyTEC + Hydropeaking-related effects on various aquatic organism groups (juvenile fish, macroinvertebrates and development of benthic algae) and ecosystem processes such as litter decay, primary production + Effects of thermopeaking, analyses of multiple pressures (discharge, nutrients and temperature) + Fish protection and fish guidance efficiency (experiments with a flexible fish fence) +"," + + + + + 47.8598408,15.030520 + +",,,"1A) WCL-Mesocosms-Ptacnik + Sampling gear; standard water chemistry; meshes for size fractionation; water pre-filtration for filling mesocosms + 1B) WCL-Mesocosms-Kainz + Sampling gear, incl. plankton nets, water collection tubes, temperature gauges, heaters, aerators, computer controlled temperature systems, wooden cabin next to mesocosms Access to analyses (with costs) + Elemental analyses of C, N, S, O, H and stable isotopes, TOC analyser + 2) HyTEC + Fully automated discharge and water temperature interface, datalogger, flow velocity measurement systems, remote-controlled (IR-) video system, electrofishing devices, sampling gears, several tanks for fish hatchery, etc. + Cooperation with WasserCluster Lunz: experiments (benthic algae), field equipment and laboratory-infrastructure (nutrient analyses, DOC analyses, microscopy, HPLC) +","Some guestrooms at WasserCluster Lunz; numerous guesthouses in Lunz am See +","1) http://www.wcl.ac.at/index.php?id=31 +2) http://hydropeaking.boku.ac.at/hytec_en.htm +"," + + + +1A) WCL-Mesocosms-Ptacnik: Land-based tanks at lake shore in Lunz + + + + +1B) WCL-Mesocosms-Kainz: Land-based tanks at lake shore in Lunz + + + + +2) HyTEC Facility: Aerial view + + + + +2) HyTEC Facility: Total view upstream direction + + + + +2) HyTEC Facility; Aerial view of adaptation for fish guidance experiments + + + + +","['http://mesocosm.org/wp-content/uploads/2017/02/Ptacnik-Lunz_400-300x226.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Kainz_mesocosms_400-300x224.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/HyTEC_1_400px-300x300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/HyTEC_2_400px-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/HyTEC_3_400px-296x300.jpg']",,,,"['47.8598408', '15.030520']","{'coordinates': ['47.8598408', '15.030520']}",, +https://mesocosm.org/mesocosm/shear-turbulence-resuspension-mesocosm-sturm-facility/,Shear TUrbulence Resuspension Mesocosm (STURM) facility,The University of Baltimore (UBalt),United States of America,North America,"UBalt STURM facility located at: +Patuxent Environmental and Aquatic Research Laboratory (PEARL), +Morgan State University, +10545 Mackall Road  +Saint Leonard, MD 20685 +USA +","Dr. Elka T. Porter, +Please login or request access to view contact information. +",2003 - present," +Six 1000L tanks (2 x 3 reps) with a 1m2 sediment surface area. +Can be set up as resuspension (R) tanks or as non resuspension (NR) tanks. + +"," +Bottom shear stress +Energy dissipation rate +RMS turbulent velocity + +"," +Benthic-pelagic coupling +tidal and episodic resuspension + +"," + + + + + 38.39364902663247,-76.50512446172259 + +","Effect of resuspension on ecosystem processes and the nitrogen cycle +","Benthic-pelagic coupling. +"," +Mixing system +turbidity monitoring +temperature monitoring + +","No lodging +",,,,,,,"['38.39364902663247', '-76.50512446172259']","{'coordinates': ['38.39364902663247', '-76.50512446172259']}",, +https://mesocosm.org/mesocosm/the-river-laboratory-heated-pond-mesocosms/,The River Laboratory heated pond mesocosms,Queen Mary University of London,United Kingdom,Europe,"QMUL +Mile End Road +London E1 4NS +United Kingdom +","Prof Mark Trimmer +  +m.trimmer@qmul.ac.uk +",2006 - present," +20 pond mesocosms 2m diameter, arranged in pairs with one in each pair heated by 4°C relative to the other. +36 unheated pond mesocosms also available at the site. + +"," +temperature + +"," +Climate change, Ecosystem metabolism, NEP, ER (e.g. Yvon-Durocher et al. 2010. Proc R Soc B, 365: 2117-2126: Yvon-Durocher et al. 2017. Nature Climate Change 7: 209-213) +Body size, ecosystem functioning (e.g. Dossena et al 2012. Proc R Soc B 279: 3011-3019) +Gas exchange, Methanogenesis (e.g. Yvon-Durocher et al.2011  Global Change Biology, 17:1225-1234) + +"," + + + + + 50.6666667, -2.1666666666666665 + +"," +Climate change +Ecosystem metabolism + +"," +Metabolic theory +C and N dynamics + +"," +Continuous measurement of gas exchange +temperature with data loggers + +","available on site +","https://www.fba.org.uk/the-river-laboratory +"," + + + +Foto credit: Yizhu Zhu + + + + +Foto credit: Yizhu Zhu + + + + +","['http://mesocosm.org/wp-content/uploads/2018/11/Ponds-1-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/Ponds-2-e1542903074614-768x1024.jpg']",,,,"['50.6666667', ' -2.1666666666666665']","{'coordinates': ['50.6666667', '-2.1666666666666665']}",, +https://mesocosm.org/mesocosm/exstream-system-germany/,ExStream System Germany,"University of Duisburg-Essen, Aquatic Ecosystem Research",Germany,Europe,"University of Duisburg-Essen, Aquatic Ecosystem Research +Universitaetsstrasse 5 +D-45141 Essen +Germany +","Prof. Florian Leese +ExStream network coordinator Asst. Prof. Jeremy J. Piggott +  +florian.leese@uni-due.de +jeremy.piggott@tcd.ie +",2013 - present,"The ExStream System comprises 128 circular stream mesocosms offering strict control of experimental variables, excellent statistical power and a high degree of realism, such as permitting natural immigration and emigration of stream organisms (invertebrates, algae and microbes) and achieving the same ambient temperature, light conditions and water chemistry as the adjoining river/stream. The mesocosms are arranged in eight blocks of 16 units each, and each of these blocks is continuously supplied by stream water gravity-fed from one of eight header tanks via 16 individual supply pipes. +  +The Experimental Stream mesocosm network (ExStream) comprises replicate installations in New Zealand, China, Japan, Germany and Ireland and is coordinated by Asst. Prof. Jeremy J. Piggott at Trinity College Dublin (jeremy.piggott@tcd.ie).   +"," +Fine sediment load +Flow velocity +Nutrient concentration (DIN; nitrate-N and ammonium-N combined + dissolved reactive phosphorus (DRP) [Breitenbach Experiment] +Salinity (manipulation of sodium chloride) [Felderbach Experiment] + +","Multiple-stressor effects on stream communities +"," + + + + + 51.349722, 7.170583 + +","Multiple stressor effecs on stream biodivrsity +","invertebrates, microorganisms, fungi. +","Basic equipment. For more details, message facility contact. +","At Felderback, private lodging. +","Project website: http://genestream.de +ExStream Germany video: https://youtu.be/a67G0GH9COs +"," + + + +Figure credit:Vasco Elbrecht + + + + +Photo credit: Vasco ELbrecht + + + + +Photo credit: Vasco Elbrecht + + + + +Figure credti: Jeremy (Jay) Piggott + + + + +  +","['http://mesocosm.org/wp-content/uploads/2018/05/Beerman-et-al-2017-SOTEN-1024x892.png', 'http://mesocosm.org/wp-content/uploads/2018/05/Breitenbach1.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Felderbach2-452x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"['51.349722', ' 7.170583']","{'coordinates': ['51.349722', '7.170583']}",, +https://mesocosm.org/mesocosm/albufera-biological-station/,Albufera Biological Station,University of Valencia,Spain,Europe,"Catedrático José Beltrán 2, +46980 Paterna +(Spain) +","Andreu Rico +Please login or request access to view contact information. +  +",2021 - present,"The aquatic mesocosm facility of the Albufera Biological Station is made up of 30 mesocosms of >1 m3, stocked with aquatic plants, plankton, and macroinvertebrate species characteristic of Mediterranean coastal wetlands. +"," +Nutrient concentrations +Salinity +Presence/absence of macrophytes +Invasive Species +Contaminant concentrations + +"," +Response of aquatic ecosystems to multiple stressors related to global change, including + +chemical pollution, +salinization, +eutrophication, +etc. + + + +"," + + + + + 39.315582, -0.318789 + +","Assessment of the structural and functional response of Mediterranean aquatic ecosystems to multiple stressors +"," +Aquatic ecology +ecotoxicology +functional microbiology + +","30 mesocosms and all equipments needed for sampling and water quality assessments +","Yes (nearby in El Palmar) +",,"Mesocosm site, photo credits: Andreu Rico +  +photo credits: Andreu Rico +  +photo credits: Pablo Amador +  +photo credits: Pablo Amador +  +","['http://mesocosm.org/wp-content/uploads/2023/12/Andreu-Rico-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/Andreu-Rico-768x1024.jpeg', 'http://mesocosm.org/wp-content/uploads/2023/12/Pablo-Amador-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/Pablo-Amador-2-768x1024.jpg']",,,,"['39.315582', ' -0.318789']","{'coordinates': ['39.315582', '-0.318789']}",, +https://mesocosm.org/mesocosm/mobicos-mobile-aquatic-mesocosm/,MOBICOS - Mobile Aquatic Mesocosm,Helmholtz Zentrum für Umweltforschung-UFZ,Germany,Europe,"Helmholtz Zentrum für Umweltforschung-UFZ +Brückstr. 3a +39114 Magdeburg +","Dr. Patrick Fink +Prof. Dr. Markus Weitere +Please login or request access to view contact information. +",,"outdoor/mobile – pelagic/benthic – freshwater +mobile containers to be deployed in or at rivers, reservoirs and lakes;  include  different basins to experimentally explore the response of natural systems to environmental factors such as nutrients, humic substances, temperature, etc. +","temperature, nutrients, humic substances +","ecological processes of pelagic/benthic organisms +"," + + + + + 52.1205333,11.627623699999958 + +",,,,,"http://www.ufz.de/index.php?de=22241 +https://www.ufz.de/index.php?en=39611 + +"," + + + + +MOBICOS (Mobile Aquatic Mesocosms) are mobile experimental containers in or close to aquatic systems. Photo: Helge Norf/UFZ + + + + + +In the MOBICOS-container scientists can experimentally comparare the growth of mussels (Corbicula fluminea) of the river Rhein und Elbe. Photo: Helge Norf/UFZ + + + + +","['http://mesocosm.org/wp-content/uploads/2017/05/Mobicos_container500px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Muschelaquarien_200px.jpg']",,,,"['52.1205333', '11.627623699999958']","{'coordinates': ['52.1205333', '11.627623699999958']}",, +https://mesocosm.org/mesocosm/igb-lakelab/,IGB LakeLab,Leibniz-Institute for Freshwater Ecology and Inland Fisheries (IGB),Germany,Europe,"Leibniz-Institute for Freshwater Ecology and Inland Fisheries (IGB) + Müggelseedamm 310 + 12587 Berlin +","Prof. Mark O Gessner (Head of Department) +Dr. Jens C Nejstgaard (Scientific Coordinator) +Dr. Stella A Berger (Scientific Site Coordinator) +Please login or request access to view contact information. +",2011 - present,"Outdoor – pelagic/benthic – freshwater +24 large lake mesocosms, each 9 m diameter, 20 m depth, reaching into the sediment, water volume 1,270 m3 per mesocosm, one additional central unit 30 m diameter, volume 14,000 m3 +","e.g. thermocline depth, stratification, extreme wheather events, browning, nutrients +","Responses of the planktonic food web, biodiversity patterns, and biogeochemical processes and fluxes under climate change scenarios +"," + + + + + 53.1520282,13.0233035 + +",,,"Each of the 24 mesocosms is equipped with: + +an automatic profiler recordimg PAR, temperature, pH, oxygen, redox potential, conductivity, turbidity, and pigments to distinguish four major algal groups +an industrial computer recording and transmitting the collected data to servers at IGB +sediment traps +a height-adjustable water recirculation system with a perforated ring, rising conduit and pump + +","IGB guesthouse, 20 beds, kitchen; local B&B +","http://www.lake-lab.de +http://www.seelabor.de/ +","Schematic diagram of the LakeLab in Lake Stechlin, northeastern Germany Aerial photograph of the LakeLab in Lake Stechlin Photo credit: HTW Dresden-Oczipka Photo credit: P. Casper, IGB +","['http://mesocosm.org/wp-content/uploads/2017/02/Stechlin_DE_graphics_400px-300x272.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Areal_photo_©HTWDresden-Oczipka_400px-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/lakelab_map-300x111.jpg']",,,,"['53.1520282', '13.0233035']","{'coordinates': ['53.1520282', '13.0233035']}",, +https://mesocosm.org/mesocosm/center-for-coastal-environmental-health-and-biomolecular-research-ccehbr/,Center for Coastal Environmental Health and Biomolecular Research-CCEHBR,National Oceanic and Atmospheric Administration Center - NOAA,USA,North-America,"National Oceanic and Atmospheric Administration Center – NOAA +","Dr. Mike Fulton +Please login or request access to view contact information. +",,"Indoor – benthic – marine + 12 replicate mesocosms with sediments (116 cm length × 49 cm width × 20 cm deep) +","tide simulations (estuary simulation) + insecticide, heavy metal, pharmaceutical or other material being tested. +","Simulation a specific estuarine system, determine the stability of their simulation, and evaluate effects of various chemical contaminants on the ecology of each system, eco-toxicological work on small tidal creeks +"," + + + + + 32.7524467,-79.8986098 + +",,,,,"http://coastalscience.noaa.gov/news/coastal-pollution/mesocosms-cutting-edge-in-research/ +Effects of chemically spiked sediments on estuarine benthic communities: a controlled mesocosm study, W. L. Balthis · J. L. Hyland · M. H. Fulton ·, P. L. Pennington · C. Cooksey · P. B. Key ·, M. E. DeLorenzo · E. F. Wirth, Environ Monit Assess (2010) 161:191–203 +"," + + + + +Greenhouse + + + + + +Mesocosm installation + + + + +","['http://mesocosm.org/wp-content/uploads/2017/05/Cherleston_meso3.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Charleston-mesocosms.jpg']",,,,"['32.7524467', '-79.8986098']","{'coordinates': ['32.7524467', '-79.8986098']}",, +https://mesocosm.org/mesocosm/archipelago-benthic-mesocosm-network/,Archipelago Benthic Mesocosm Network,Åbo Akademi University,Finland,Europe,"Henrikinkatu 2, +20500 Åbo/Turku, +Finland +","Christian Pansch-Hattich (Dr., Prof. in Marine Ecology) +Please login or request access to view contact information., +Please login or request access to view contact information. +",2021 - ongoing,"Outdoor – Pelagic/Benthic – Marine/Brackish +Outdoor infrastructure consisting of 40 independent 600-liter tanks distributed across two marine field stations in the Archipelago Sea (Skärgårdscentrum Korpoström, 20 tanks) and the Åland Islands (Husö Biological Station, 20 tanks), Finland. The systems receive (filtered or unfiltered) through-flowing seawater (brackish conditions, salinities 5–6) from the nearby straights/bays, are computer-controlled for temperature manipulation, and are built flexibly for the manipulation of multiple parameters. +"," +Temperature +irradiation +nutrients +artificial light at night (ALAN) +(salinity, pH in progress) + +"," +Climate change (temperature variability and marine heatwave) +impacts on single species +benthic communities + +"," + + + + + + + 60.1102778,21.598055555555554;60.2794444,19.83138888888889 + +"," +Manipulation of community composition for testing facilitation effects of ecosystem engineer species in climate change (warming, thermal variability, and marine heatwaves) settings. +food web approaches + +"," +ALAN (artificial light at night) +multiple stressors (local, regional, global) +the systems can be used in connection to existing wave tanks for the manipulation of waves and water velocity, and/or highly replicated aquarium systems +the system is built flexibly encompassing 2×20 600L tanks or the work in experimental sub-units allowing smaller but up to 140 experimental units (20 L) + +"," +40 independent experimental units (140 to infinite subunits in these tanks) +heaters (Schego), coolers (Aqua Medic) +internal circulation (EHEIM) +flow-through system +programmable climate simulation (GHL) + +","Available at the field stations +","https://www.abo.fi/en/emb-research-infrastructure/mesocosms/ +https://pansch-research.com/?page_id=1592 +","Korpoström mesocosm tanks are equipped with constant flow and circulation of seawater from the adjacent bay. Electrical cabinets currently provide the possibility for monitoring and manipulation of seawater temperature. Seagrass shoots (upper left panel) are planted into separate sediment trays, photo credits: Christian Pansch Hattich Korpoström mesocosm system located at the Skärgårdscentrum Korpoström, Finland. 20 600L tanks receive seawater from the adjacent bay, photo credits: Christian Pansch-Hattich Husö mesocosm system located at Husö Biological Station, Åland, Finland. Seawater temperature monitoring and manipulation is achieved through Aqua Medic and GHL controlling units, as well as Aqua Medic cooling and Schego heading devices. photo credits: Christian Pansch-Hattich Husö mesocosm system located at Husö Biological Station, Åland, Finland. 20 600L tanks receive a flow-through of seawater from the adjacent bay. Christian Pansch-Hattich +","['http://mesocosm.org/wp-content/uploads/2024/07/3_small-1024x530.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/2_small-1024x567.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/5_small-1024x565.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/4_small-1024x560.jpg']",,,,"['60.1102778', '21.598055555555554']","{'coordinates': ['60.1102778', '21.598055555555554']}",, +https://mesocosm.org/mesocosm/archipelago-benthic-mesocosm-network/,Archipelago Benthic Mesocosm Network,Åbo Akademi University,Finland,Europe,"Henrikinkatu 2, +20500 Åbo/Turku, +Finland +","Christian Pansch-Hattich (Dr., Prof. in Marine Ecology) +Please login or request access to view contact information., +Please login or request access to view contact information. +",2021 - ongoing,"Outdoor – Pelagic/Benthic – Marine/Brackish +Outdoor infrastructure consisting of 40 independent 600-liter tanks distributed across two marine field stations in the Archipelago Sea (Skärgårdscentrum Korpoström, 20 tanks) and the Åland Islands (Husö Biological Station, 20 tanks), Finland. The systems receive (filtered or unfiltered) through-flowing seawater (brackish conditions, salinities 5–6) from the nearby straights/bays, are computer-controlled for temperature manipulation, and are built flexibly for the manipulation of multiple parameters. +"," +Temperature +irradiation +nutrients +artificial light at night (ALAN) +(salinity, pH in progress) + +"," +Climate change (temperature variability and marine heatwave) +impacts on single species +benthic communities + +"," + + + + + + + 60.1102778,21.598055555555554;60.2794444,19.83138888888889 + +"," +Manipulation of community composition for testing facilitation effects of ecosystem engineer species in climate change (warming, thermal variability, and marine heatwaves) settings. +food web approaches + +"," +ALAN (artificial light at night) +multiple stressors (local, regional, global) +the systems can be used in connection to existing wave tanks for the manipulation of waves and water velocity, and/or highly replicated aquarium systems +the system is built flexibly encompassing 2×20 600L tanks or the work in experimental sub-units allowing smaller but up to 140 experimental units (20 L) + +"," +40 independent experimental units (140 to infinite subunits in these tanks) +heaters (Schego), coolers (Aqua Medic) +internal circulation (EHEIM) +flow-through system +programmable climate simulation (GHL) + +","Available at the field stations +","https://www.abo.fi/en/emb-research-infrastructure/mesocosms/ +https://pansch-research.com/?page_id=1592 +","Korpoström mesocosm tanks are equipped with constant flow and circulation of seawater from the adjacent bay. Electrical cabinets currently provide the possibility for monitoring and manipulation of seawater temperature. Seagrass shoots (upper left panel) are planted into separate sediment trays, photo credits: Christian Pansch Hattich Korpoström mesocosm system located at the Skärgårdscentrum Korpoström, Finland. 20 600L tanks receive seawater from the adjacent bay, photo credits: Christian Pansch-Hattich Husö mesocosm system located at Husö Biological Station, Åland, Finland. Seawater temperature monitoring and manipulation is achieved through Aqua Medic and GHL controlling units, as well as Aqua Medic cooling and Schego heading devices. photo credits: Christian Pansch-Hattich Husö mesocosm system located at Husö Biological Station, Åland, Finland. 20 600L tanks receive a flow-through of seawater from the adjacent bay. Christian Pansch-Hattich +","['http://mesocosm.org/wp-content/uploads/2024/07/3_small-1024x530.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/2_small-1024x567.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/5_small-1024x565.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/4_small-1024x560.jpg']",,,,"['60.2794444', '19.83138888888889']","{'coordinates': ['60.2794444', '19.83138888888889']}",, +https://mesocosm.org/mesocosm/syke-mrc-marine-research-centre-mesocosm-facility/,SYKE-MRC (Marine Research Centre) Mesocosm Facility,Marine Research Centre,Finland,Europe,"Marine Research Centre (MRC) + Finnish Environment Institute SYKE + P.O.Box 140 + FI-00251 Helsinki + Finland +","Res. Prof. Timo Tamminen + Head of Laboratory Jukka Seppälä +Please login or request access to view contact information.,Please login or request access to view contact information. +",periodically since 1988,"pelagic – marine – indoor + Indoor experimental systems in a range of volumes, with integrated incubation condition control, data retrieval, and their on-line presentation. Also ice tanks available for ice ecology research +  +","Temperature, light, pH, pCO2, nutrient levels, community composition +","Planktonic food web, phytoplankton ecology, stoichiometry, biodiversity, ice ecology +"," + + + + + 60.203843,24.9617237 + +",,,"Wet labs, climatic chambers, advanced bio-optical instrumentation (spectrophotometry, spectrofluorometry, FRRF), microscope imaging instrumentation, flow cytometry, isotope lab, chemistry lab +","City location – commercial lodging +","http://www.finmari-infrastructure.fi/laboratories/syke-mrc-marine-ecology-laborato/ +"," + + + +ndoor medium-scale experimental unit + + + + +SYKE-MRC field mesocosm work at Tvärminne +  + + + + +","['http://mesocosm.org/wp-content/uploads/2017/02/plankton-tower-153x300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['60.203843', '24.9617237']","{'coordinates': ['60.203843', '24.9617237']}",, +https://mesocosm.org/mesocosm/uib-mesocosm-centre-university-of-bergen-mesocosm-centre/,UiB Mesocosm Centre (University of Bergen Mesocosm Centre),University of Bergen (UiB),Norway,Europe,"University of Bergen (UiB) + Department of Biology + PO-Box 7803 + 5020 Bergen OR Thormøhlensgate 53 A & B + 5006 Bergen + NORWAY +","Prof. Jorun Egge +Please login or request access to view contact information. +",1978-present,"outdoor – pelagic – marine + 1. Floating platform + including up to 12 floating rings with mesocosm bags ranging from 10 to 30 m3,  diameter  2 m; length 5-10 m, see Fig.1 + 2. Land-based system + with up to 18 tanks of 2.5 m3 , diameter 1.5 m; height 1.5 m, deployed within 3 tanks of 30 m3 , diameter 5 m; height 1.5 m, see Fig.2 +",,"Studies of the whole microbial community from viruses to mesozooplankton, grazing studies, initiate and follow specific phytoplankton blooms (e.g. diatoms, Emiliania huxleyi) acidification experiments, testing outcome/results of simulation models +"," + + + + + 60.2695262,5.2234965 + +",,,"Small boats (with outboard motor), CTD w/fluorescence sensor, plankton nets and water samplers. Pumps and airlift systems for mesocosms. General lab equipment such as freezers, ovens and washing machines for lab equipment, Milli-Q water (small volumes only), distilled water, a cooled centrifuge, basic microscopes etc +In collaboration with UiB scientists: state-of the-art microscopy imaging, fluorometer, genomics, proteomics, X-ray fluorescence, Flow cytometry, FlowCam, and more +","Dormitory with single and double rooms  sleeping up to 30 guests, a few steps away from the laboratory building, modern large scale kitchen facilities where guests can provide their meals and a combined dining and living room. Laundry facility is available on site. +","http://www.uib.no/node/56734 +"," + + + + +Fig.1 Floating structure with 12 mesocosms (Photo: Stella A Berger) + + + + + +Fig.2 Land-based mesocosms (Photo: Stella A Berger) + + + + +","['http://mesocosm.org/wp-content/uploads/2017/02/Fig.6.2.1-1-300x222.png', 'http://mesocosm.org/wp-content/uploads/2017/02/Fig.6.2.1-2-300x225.png']",,,"Seawater enclosures +Nutrient composition, add/remove mesozooplankton, CO2/pH +Land based tanks +Nutrient composition, add/remove mesozooplankton CO2/pH, salinity, adjust light and temperature +","['60.2695262', '5.2234965']","{'coordinates': ['60.2695262', '5.2234965']}",, +https://mesocosm.org/mesocosm/marine-ecosystems-research-laboratory-merl/,Marine Ecosystems Research Laboratory - MERL,University of Rhode Island,USA,North-America,"University of Rhode Island +","Prof. Candace Oviatt +Please login or request access to view contact information. +",1976-,"outdoor – pelagic – marine +Fourteen cylindrical enclosures, 1.8 m in diameter and 5.5 m in depth, arranged along an access deck outside and adjacent to the building +","Aquatic ecosystem studies includig nutrients, trace metals, other contaminants, salinity, hydrocarbons, larval fish, and animal species. +","Long-term experiments, often of a duration greater than one year, have been conducted to observe ecosystems under the influence of hydrocarbon, enhanced nutrients, different nutrient ratios, sewage sludge and effluent, polluted sediments, salinity gradients and stratification. + Many short-term experiments have been conducted to observe the behavior of several individual hydrocarbons, trace metals and animal species, such as larval fish. +"," + + + + + 41.49175,-71.4207629 + +",,,"The facility has laboratories for biology, radio-tracer studies, and nutrient chemistry: + – Analysis of dissolved and particulate nutrients with an Automated Analyzer. Phosphate, nitrate, nitrite, ammonia, and silicate analyses are available + – Chlorophyll extraction and analysis with a Turner Fluorometer + – Productivity measurements using a carbon-14 tracer + – Total Suspended Solids (TSS) analysis + – Dissolved Inorganic Carbon (DIC) analysis + – Benthic invertebrate identification and analysis – Winkler titrations +",,"http://www.gso.uri.edu/merl/merl.html +"," + + + + +MERL facility + + + + + +MERL outdoor mesocosms + + + + + +Schema of the MERL construction + + + + +","['http://mesocosm.org/wp-content/uploads/2017/05/merl_300.gif', 'http://mesocosm.org/wp-content/uploads/2017/05/Narragansett-US-RIMERL-deck_400.gif', 'http://mesocosm.org/wp-content/uploads/2017/05/Narragansett-US-RImerltankpic5_400.jpg']",,,,"['41.49175', '-71.4207629']","{'coordinates': ['41.49175', '-71.4207629']}",, +https://mesocosm.org/mesocosm/artificial-stream-and-pond-system-fsa/,Artificial Stream and Pond System (FSA),German Environment Agency,Germany,Europe,"German Environment Agency +","Ralf Schmidt +Please login or request access to view contact information. +  +  +",Since 2001,"Outdoor and indoor pond and stream system. The facility comprises 8 indoor and 8 outdoor ponds and streams, the latter of 1.6 km total length (indoor + outdoor). Water bodies are large enough to carry all trophic levels including fish +","Control of light, temperature, flow velocity, wind, colonization of insects etc., +Simulation of groundwater flow in semi-natural conditions (influent/effluent flow regime, remobilization of substances) +","Ecotoxicological, ecological, and hydrological studies (fate and effects of pesticides, biocides, pharmaceuticals, or industrial chemicals in ponds or streams; fate of viruses in bathing waters; model verifications; vertical mass transport water/sediment; + light pollution) +"," + + + + + 52.4107352,13.3756523 + +","Ecotoxicological studies +","Upcoming years: mixture toxicity of chemicals, degradation of plastics, passive sampling (chemicals) +","Each stream and pond is equipped with online instruments to continuously measure conductivity, O2, pH, water level, temperature, turbidity and, in streams, flow velocity. Chemical variables such as contaminants in water, sediment and biota can be measured in the laboratory according to demands. FSA is well equipped with gas chromatographs-mass spectrometers (GC-MS), high-performance liquid chromatograph (HPLC), an inorganic carbon (IC) analyser, a TOC analyser, automated titration units, an ion chromatograph, a continuous flow analyser for nutrient analyses (N, P), etc. In addition, light conditions in and above the water of streams and ponds, chlorophyll a and phaeopigments, and many other biological variables are routinely analysed. All experimental data are fed into a central data base for quality checks and analysis. The input of data entry, in particular physico-chemical data, from defined analysis protocols is automated. The database user programme is independent of the system software and is available on the internet. +",,"https://www.umweltbundesamt.de/en/topics/chemicals/chemical-research-at-uba/artificial-stream-pond-system +Mohr et al. 2005 ESPR – Environ Sci & Pollut Res 12 (1) +"," + + + +Outside view of the hall housing the indoor artificial streams and ponds © Umweltbundesamt + + + + +Outdoor mesocosm system © Umweltbundesamt + + + + +Outdoor streams © Umweltbundesamt + + + + +","['http://mesocosm.org/wp-content/uploads/2017/02/Berlin_Marienfelde_aussen.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Berlin-Marienfelde_aussenan-300x185.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Berlin_Marienfelde_rinne_aus.jpg']",,,,"['52.4107352', '13.3756523']","{'coordinates': ['52.4107352', '13.3756523']}",, +https://mesocosm.org/mesocosm/the-river-laboratory-experimental-stream-channel-mesocosms/,The River Laboratory experimental stream channel mesocosms,Queen Mary University of London,United Kingdom,Europe,"QMUL +Mile End Road +London E1 4NS +United Kingdom +","Dr John Iwan Jones +  +j.i.jones@qmul.ac.uk +",1998 - present,"12 flow-through gravel bed stream channels, each 12m long arranged in 4 blocks. Draws water from a chalk stream site of special scientific interest, colonized by natural communities.   +"," +Flow +Suspended sediment +Bed composition +Pesticides +[Dependent on experimental objectives, e.g. flow and colmation] + +"," +Drought (e.g. Ledger et al. 2013 Nature Climate Change 3: 223-227: Lu et al. 2016. Nature Climate Change 6: 875) +Low flows (e.g. Jones et al. 2015. Freshw. Biol. 60: 813-826) +Fine sediment (e.g. Growns et al. 2017. Marine and Freshwater Research 68: 496-505) +Pesticides + +"," + + + + + 50.6666667, -2.1833330555555555 + +"," +Impacts on invertebrate +algal and plant communities + +"," +Food web structure +hyporheic invertebrates +hyporheic chemistry +traits + +","All sampling and set up equipment available +","available on site +","https://www.fba.org.uk/the-river-laboratory +"," + + + +Foto credit: Iwan Jones + + + + +Foto credit: Iwan Jones + + + + +Foto credit: Iwan Jones + + + +  + + + +  +","['http://mesocosm.org/wp-content/uploads/2018/11/Streams-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/Streams-4-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/Streams-1-1024x768.jpg']",,,,"['50.6666667', ' -2.1833330555555555']","{'coordinates': ['50.6666667', '-2.1833330555555555']}",, +https://mesocosm.org/mesocosm/au-lake-mesocosm-warming-experiment-lmwe/,AU Lake Mesocosm Warming Experiment (LMWE),Aarhus University (AU),Denmark,Europe,"Aarhus University (AU) + Nordre Ringgade 1 + 8000 Aarhus C + Denmark +","Prof. Erik Jeppesen +Please login or request access to view contact information. +  +",2003-present,"outdoor – pelagic/benthic – freshwater + 24 cylindrical outdoor mesocosms, each 2.8 m3 in volume +","Nutrients, temperature +","A unique long-term flow-through mesocosm facility with 11 years so far the world’s longest running mesocosm experiment addressing climate-change effects on lakes under contrasting nutrient levels and water clarity, population- and seasonal dynamics of underwater plants, plankton, production, respiration, stable isotopes, bacteria, fluxes of nutrients +"," + + + + + 56.244846,9.529916 + +",,,"Permanently installed probes in all mesocosms for oxygen and pH measurements, AU freshwater lab in Silkeborg (15 km) +",,," + + + +Schema of mesocosm tank + + + + +Mesocosm tanks in Silkeborg, DK + + + + +","['http://mesocosm.org/wp-content/uploads/2017/02/silkeborg_mesocosm_schema-300x210.png', 'http://mesocosm.org/wp-content/uploads/2017/02/silkeborg_mesocosm-300x223.png']",,,,"['56.244846', '9.529916']","{'coordinates': ['56.244846', '9.529916']}",, +https://mesocosm.org/mesocosm/awri-mesocosm-facility/,AWRI mesocosm facility,"Annis Water Resources Institute, Grand Valley State University",USA,North America,"740 West Shoreline Drive +Muskegon, Michigan +49441 +USA +","Alan Steinman +Please login or request access to view contact information. +",2004 - present," +12 fiberglass tanks at 1325 liters, including metal halide, +timer-controlled lights, housed in a climate controlled room and connected to Muskegon Lake filtered water. + +"," +light + +"," +predator-prey interaction +microplastic impact +sediment contaminant +macrophyte-phytoplankton interaction +fish behavior +nutrient impacts + +"," + + + + + 43.224194,-86.235809 + +"," +Invasive species +eutrophication +climate change + +",,,"not on site +","https://www.gvsu.edu/wri/facility-103.htm +"," + + + +Photo credits: AWRI GVSU + + + + +Photo credit: AWRI GVSU + + + + +Photo credits: AWRI GVSU + + + + +","['http://mesocosm.org/wp-content/uploads/2022/09/Full_field-station_2.1-683x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2022/09/mesocosm.1-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2022/09/P3080003.jpg']",,,,"['43.224194', '-86.235809']","{'coordinates': ['43.224194', '-86.235809']}",, +https://mesocosm.org/mesocosm/gropello-21026-gaviratevarese/,"Gropello, 21026 Gavirate/Varese",Institut Dr. Nowak (a),Italy,Europe,"Institut Dr. Nowak (a) + Abteilung Limnologie + Mayenbrook 1 + D – 28870 Ottersberg  + + University of Insubria (b) + Department of theoretical and applied sciences, Ecology unit + Via H. Dunant 3 + I – 21100 Varese +","a) Dr. Said Yasseri + b) Prof. Dr. Giuseppe Crosa + Please login or request access to view contact information. +",02/2009 - 07/2009 and 11/2009 - 10/2010,"Outdoor, pelagic/benthic, freshwater + floating platform including 3 floating PE-rings with mesocosms reaching into the sediment, 47 m³ per mesocosm, each 2 m diameter and 15 m depth (see Fig. 1) +","1)   Water: e.g. nutrients, species composition (algae & zooplankton), carbon, metals, ecotoxicology +2) Sediment: e.g. nutrients, metals, ecotoxicology +","Nutrients, quantification of sediment P-release, + effects of lanthanum modified clay on the P-release +"," + + + + + 45.799026,8.7300945 + +",,,"Mobile mesocosm structure, can be installed on other study sites +",,"Crosa G, Yasseri S, Novak K-E, Caziani A, Roella V, Zaccara S. 2013. Recovery of Lake Varese: reducing trophic status through internal P load capping, Fundamental and Applied Lmnology, Vol. 183/1, 49-61. +"," + + + +Mesocosm installation in Lago di Varese (Photo by Institute Dr. Novak) + + + + + + + +Mesocosms in Lago di Varese (Photo by Institute Dr. Novak) + + + + + +Sketch of the mesocosm construction (Dr. Yasseri) + + + + + +Location of Lago di Varese: Latitude 45.818369; Longitude 8.738972 + + + + +","['http://mesocosm.org/wp-content/uploads/2017/05/Lago_di_Varese_1_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lago_di_Varese_2_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lago_di_Varese_construction_300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/LagodiVarese_300.png']",,,,"['45.799026', '8.7300945']","{'coordinates': ['45.799026', '8.7300945']}",, +https://mesocosm.org/mesocosm/exstream-system-new-zealand/,ExStream System New Zealand,"University of Otago, Department of Zoology",New Zealand,Australasia,"340 Great King St +Dunedin 9054 +New Zealand +","Assoc. Prof. Christoph D. Matthaei +ExStream network coordinator Asst. Prof. Jeremy J. Piggott +  +christoph.matthaei@otago.ac.nz  +jeremy.piggott@tcd.ie +",2007 - present,"The ExStream System comprises 128 circular stream mesocosms offering strict control of experimental variables, excellent statistical power and a high degree of realism, such as permitting natural immigration and emigration of stream organisms (invertebrates, algae and microbes) and achieving the same ambient temperature, light conditions and water chemistry as the adjoining river/stream. The mesocosms are arranged in eight blocks of 16 units each, and each of these blocks is continuously supplied by stream water gravity-fed from one of eight header tanks via 16 individual supply pipes. +  +The Experimental Stream mesocosm network (ExStream) comprises replicate installations in New Zealand, China, Japan, Germany and Ireland and is coordinated by Asst. Prof. Jeremy J. Piggott at Trinity College Dublin (jeremy.piggott@tcd.ie).   +"," +Current velocity +flow +nutrients +fine sediment +pesticides +antibiotics +nitrification inhibitors +light levels +water temperature +grazing pressure + +","Multiple-stressor effects on stream ecosystems; also natural drivers shaping stream communities +"," + + + + + -45.06337, 170.44303 + +","Multiple-stressor effects on stream ecosystems; also natural drivers shaping stream communities +","Multiple-stressor effects on stream ecosystems +","Everything needed to run the experiments +","Caravan camping is facilitated through the facility. +","Blog post: https://jappliedecologyblog.wordpress.com/2015/07/03/exstream-study-assesses-stream-ecosystem-functioning-the-effects-of-climate-warming-multiple-agricultural-stressors/ +Short video about ExStream System research: https://vimeo.com/243219546 +"," + + +  +from: Piggott et al. 2015, Global Chnage Biology, 21, 206-222 + + + + +Photo credit: Jeremy (Jay) Piggott + + + + +Figure credit: Jeremy (Jay) Piggott + + + +  +Figure credit: Jeremy (Jay) Piggott + + + + +​ +  +","['http://mesocosm.org/wp-content/uploads/2018/10/Piggott-et-al.-2015-Global-Change-Biology-21-206-222.-959x1024.png', 'http://mesocosm.org/wp-content/uploads/2018/10/Kauru-ExStream-Under-the-Rainbow-1024x589.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/ExStream-mesocosms-960x1024.png', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"['-45.06337', ' 170.44303']","{'coordinates': ['-45.06337', '170.44303']}",, +https://mesocosm.org/mesocosm/mesocosms-experimental-garden-radboud-university/,Mesocosms – experimental garden Radboud University,Radboud University,Netherlands,Europe,"Comeniuslaan 4, 6525 HP Nijmegen +"," Sarian Kosten +Please login or request access to view contact information. +",>10 (the current mesocosms are 2 years old),"16 (appr. 800L) outdoor mesocosms 115 × 75 [diameter × depth in cm]; roughly 1 m²) placed into the ground to buffer temperature fluctuations. Electricity and potable and groundwater taps nearby. +The 2-year old mesocosms have been used to study the effect of fish on sediment-water nutrient fluxes and greenhouse gas emissions. Earlier mescosms work (in the previous set of mesocosms) focused on the impact of eutrophication on different plant species. +","None (exposed to ambient light, temperature fluctuations dampened because the mesocosms are dug into the ground. +","Greenhouse gases, biogeochemistry (emphasis on eukaryotes (fish & plants) on GHG emission, conservation (e.g. effect of prevention of bioturbation on submerged macrophytes) +"," + + + + + 51.822777,5.8733333 + +","Eutrophication, primary producers, fish, biogeochemistry, greenhouse gases +","The carbon balance of inland waters +Effects of climate change on aquatic ecology and water quality +Competition between different groups of primary producers (submerged and floating macrophytes, algae and cyanobacteria). +","The Institute for Water and Wetland Research of the Radboud University and the Department of Aquatic Ecology and Environmental Biology maintain a state-of-the-art biogeochemistry lab with expert technicians and analytical equipment for, among others, next-generation (NIRS-CRD) gas analyzers (Picarro G2508 & Los Gatos Ultraportable GGA), an IRGA for dissolved CO2 and CH4 measurements, instruments for the chemical analysis of water and sediment (ICP-OES, ICP-MS, spectrophotometric analyzers, microwave destruction units, DOC/DON analyzers, C-N analyzers, HPLC, HPLC-amino acid analyzer, IRMS, Phytopam). In addition, we have microscale dissolved oxygen micro-optodes and micromanipulator as well as O2 spots for non-invasive measurements in bottles and cores (all Presens), freeze-dryers and analytical balances including a sedimentation balance. Our field instrumentation includes HOBO light and temperature loggers, Hach multimeters for conductivity, temperature, pressure, and optical probes for dissolved oxygen. Furthermore, the department is well equipped with experimental facilities with, besides our mesocosms, greenhouse facilities, aquaria and pumping systems, water-baths, climate rooms. A GC-MS for CH4 stable isotope analysis is available at the Microbiology Department. +","Guest house at a distance of <500m. +https://www.ru.nl/english/about-us/services-facilities/guesthouse/ +","https://www.ru.nl/bgard/research-facilities/experimental-field/ +https://www.ru.nl/science/aquatic +Oliveira Junior, E. S., R. J. M. Temmink, B. F. Buhler, R. M. Souza, N. Resende, T. Spanings, C. C. Muniz, L. P. M. Lamers and S. Kosten (2019). “Benthivorous fish bioturbation reduces methane emissions, but increases total greenhouse gas emissions.”  64(1): 197-207. +Tang, Y., S. F. Harpenslager, M. M. L. van Kempen, E. J. H. Verbaarschot, L. M. J. M. Loeffen, J. G. M. Roelofs, A. J. P. Smolders and L. P. M. Lamers (2016). “Aquatic macrophytes can be used for wastewater polishing, but not for purification in constructed wetlands.” Biogeosciences Discuss. 2016: 1-32. +"," + + + +Photo credit: Sarian Kosten + + + + +Photo credit: Sarian Kosten + + + + +","['http://mesocosm.org/wp-content/uploads/2019/03/Radboud_mesocosm1-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Radboud_mesocosm2-300x169.jpg']",,,,"['51.822777', '5.8733333']","{'coordinates': ['51.822777', '5.8733333']}",, +https://mesocosm.org/mesocosm/hungarian-pond-network/,Hungarian Pond Network,Centre for Ecological Research,Hungary,Europe,"Centre for Ecological Research +H-1113 Budapest, Karolina út 29. +Hungary +","Dr. Csaba Vad +Please login or request access to view contact information. +  +",2023 - present,"A standardized outdoor mesocosm infrastructure spread across Hungary. Each of the four systems consist of 24 1000-L tanks mimicking small ponds. They are installed 1.5 m apart from each other, all of them are equipped with a temperature logger, half of them with a heating device. +"," +Temperature + +"," +Pond ecology +Plankton ecology +Trophic interactions +Climate change + +"," + + + + + + + 47.705277833333334,19.228137999999998;46.870555555555555,19.422222222222224;46.88,17.66861111111111;47.603611111111114,21.3575; + +",,,"Temperature control, incl. heaters and loggers +",,"https://ecolres.hu/en/home/ +https://ecolres.hu/en/kutatocsoportok/plankton-ecology-research-group/ +","The locations of the four HPN four mesocosm facilities across Hungary. (Photo credits: Centre for Ecological Research) +A mesocosm at the Fülöpháza HPN facility. (Photo credit: Csaba Vad) +The Vácrátót HPN mesocosm facility during winter. (Photo credit: Csilla Laskai) +A mesocosm at the Zánka facility. (Phto credit: Csilla Laskai) +  +","['http://mesocosm.org/wp-content/uploads/2024/01/Photo-1.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-2-1024x461.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/photo-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-4-1024x768.jpg']",,,,"['47.705277833333334', '19.228137999999998']","{'coordinates': ['47.705277833333334', '19.228137999999998']}",, +https://mesocosm.org/mesocosm/hungarian-pond-network/,Hungarian Pond Network,Centre for Ecological Research,Hungary,Europe,"Centre for Ecological Research +H-1113 Budapest, Karolina út 29. +Hungary +","Dr. Csaba Vad +Please login or request access to view contact information. +  +",2023 - present,"A standardized outdoor mesocosm infrastructure spread across Hungary. Each of the four systems consist of 24 1000-L tanks mimicking small ponds. They are installed 1.5 m apart from each other, all of them are equipped with a temperature logger, half of them with a heating device. +"," +Temperature + +"," +Pond ecology +Plankton ecology +Trophic interactions +Climate change + +"," + + + + + + + 47.705277833333334,19.228137999999998;46.870555555555555,19.422222222222224;46.88,17.66861111111111;47.603611111111114,21.3575; + +",,,"Temperature control, incl. heaters and loggers +",,"https://ecolres.hu/en/home/ +https://ecolres.hu/en/kutatocsoportok/plankton-ecology-research-group/ +","The locations of the four HPN four mesocosm facilities across Hungary. (Photo credits: Centre for Ecological Research) +A mesocosm at the Fülöpháza HPN facility. (Photo credit: Csaba Vad) +The Vácrátót HPN mesocosm facility during winter. (Photo credit: Csilla Laskai) +A mesocosm at the Zánka facility. (Phto credit: Csilla Laskai) +  +","['http://mesocosm.org/wp-content/uploads/2024/01/Photo-1.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-2-1024x461.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/photo-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-4-1024x768.jpg']",,,,"['46.870555555555555', '19.422222222222224']","{'coordinates': ['46.870555555555555', '19.422222222222224']}",, +https://mesocosm.org/mesocosm/hungarian-pond-network/,Hungarian Pond Network,Centre for Ecological Research,Hungary,Europe,"Centre for Ecological Research +H-1113 Budapest, Karolina út 29. +Hungary +","Dr. Csaba Vad +Please login or request access to view contact information. +  +",2023 - present,"A standardized outdoor mesocosm infrastructure spread across Hungary. Each of the four systems consist of 24 1000-L tanks mimicking small ponds. They are installed 1.5 m apart from each other, all of them are equipped with a temperature logger, half of them with a heating device. +"," +Temperature + +"," +Pond ecology +Plankton ecology +Trophic interactions +Climate change + +"," + + + + + + + 47.705277833333334,19.228137999999998;46.870555555555555,19.422222222222224;46.88,17.66861111111111;47.603611111111114,21.3575; + +",,,"Temperature control, incl. heaters and loggers +",,"https://ecolres.hu/en/home/ +https://ecolres.hu/en/kutatocsoportok/plankton-ecology-research-group/ +","The locations of the four HPN four mesocosm facilities across Hungary. (Photo credits: Centre for Ecological Research) +A mesocosm at the Fülöpháza HPN facility. (Photo credit: Csaba Vad) +The Vácrátót HPN mesocosm facility during winter. (Photo credit: Csilla Laskai) +A mesocosm at the Zánka facility. (Phto credit: Csilla Laskai) +  +","['http://mesocosm.org/wp-content/uploads/2024/01/Photo-1.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-2-1024x461.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/photo-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-4-1024x768.jpg']",,,,"['46.88', '17.66861111111111']","{'coordinates': ['46.88', '17.66861111111111']}",, +https://mesocosm.org/mesocosm/hungarian-pond-network/,Hungarian Pond Network,Centre for Ecological Research,Hungary,Europe,"Centre for Ecological Research +H-1113 Budapest, Karolina út 29. +Hungary +","Dr. Csaba Vad +Please login or request access to view contact information. +  +",2023 - present,"A standardized outdoor mesocosm infrastructure spread across Hungary. Each of the four systems consist of 24 1000-L tanks mimicking small ponds. They are installed 1.5 m apart from each other, all of them are equipped with a temperature logger, half of them with a heating device. +"," +Temperature + +"," +Pond ecology +Plankton ecology +Trophic interactions +Climate change + +"," + + + + + + + 47.705277833333334,19.228137999999998;46.870555555555555,19.422222222222224;46.88,17.66861111111111;47.603611111111114,21.3575; + +",,,"Temperature control, incl. heaters and loggers +",,"https://ecolres.hu/en/home/ +https://ecolres.hu/en/kutatocsoportok/plankton-ecology-research-group/ +","The locations of the four HPN four mesocosm facilities across Hungary. (Photo credits: Centre for Ecological Research) +A mesocosm at the Fülöpháza HPN facility. (Photo credit: Csaba Vad) +The Vácrátót HPN mesocosm facility during winter. (Photo credit: Csilla Laskai) +A mesocosm at the Zánka facility. (Phto credit: Csilla Laskai) +  +","['http://mesocosm.org/wp-content/uploads/2024/01/Photo-1.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-2-1024x461.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/photo-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-4-1024x768.jpg']",,,,"['47.603611111111114', '21.3575']","{'coordinates': ['47.603611111111114', '21.3575']}",, +https://mesocosm.org/mesocosm/marine-plant-mesocosm-system/,Marine Plant Mesocosm System,CCMAR – Centre of Marine Sciences,Portugal,Europe,"Universidade do Algarve +Campus de Gambelas, Ed.7 +8005-139 Faro +Portugal +","Prof. Adelino Canário +Dr. João Silva +  +acanario@ualg.pt +jmsilva@ualg.pt +",,"This facility is a marine infrastructure, incorporating three complementary mesocosm systems: + +Outdoor system, modular, with up to 40 independent flow-through 100 L tanks. Each experimental tank is linked to a dedicated head-tank, allowing true replication and random distribution of treatment levels across the system. The experimental tanks were conceived to accommodate rooted marine plants (seagrasses) but are easily adaptable to other organisms. CO2-enriched air is prepared in a 5000 L reservoir (IRGA-controlled mixture) and bubbled in the individual head-tanks. +Indoor system, with similar design and operating principle, fitted with 30 L aquaria and artificial light. +Outdoor system, 200 L flow-through experimental tanks. Water is supplied from a single head-tank, where pH is used to regulate CO2 injection. + +","pCO2, pH, water-flow, nutrient concentrations, light levels +",," + + + + + 37.006, -7.966 + +",,,"Control systems based on real-time CO2 analysis, alkalinity titrators, water chemistry sensors. +","A wide range of hotels, hostels and apartments are available in Faro. +","https://www.ccmar.ualg.pt +https://www.ccmar.ualg.pt/page/aquaexcel2020 +  +"," + + + +Photo credit: João Silva + + + + +Photo credit: João Silva + + + + +Photo credit: João Silva + + + + +","['http://mesocosm.org/wp-content/uploads/2018/05/CCMAR_mesocosm_2-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/CCMAR_mesocosm_1-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/CCMAR_mesocosm_3.jpg']",,,,"['37.006', ' -7.966']","{'coordinates': ['37.006', '-7.966']}",, +https://mesocosm.org/mesocosm/exstream-brazil/,ExStream Brazil,Universidade Federal do ABC (Federal University of ABC),Brazil,South America,"Av. dos Estados, 5001, B. Santa Terezinha, Santo André, SP, Brazil. CEP 09210-580 +","Adjunct Professor Ricardo Hideo Taniwaki +Please login or request access to view contact information. +",0,"The ExStream System comprises 128 circular stream mesocosms offering strict control of experimental variables, excellent statistical power and a high degree of realism, such as permitting natural immigration and emigration of stream organisms (invertebrates, algae and microbes) and achieving the same ambient temperature, light conditions and water chemistry as the adjoining river/stream. The mesocosms are arranged in eight blocks of 16 units each, and each of these blocks is continuously supplied by stream water gravity-fed from one of eight header tanks via 16 individual supply pipes. +The Experimental Stream mesocosm network (ExStream) comprises replicate installations in New Zealand, China, Japan, Germany and Ireland and is coordinated by Asst. Prof. Jeremy J. Piggott at Trinity College Dublin (jeremy.piggott@tcd.ie).    +","Current velocity, flow, nutrients, fine sediment, pesticides, antibiotics, nitrification inhibitors, light levels, water temperature, grazing pressure +","Multiple-stressor effects on stream ecosystems; also, natural drivers shaping stream communities +"," + + + + + -23.060634, -48.630102 + +","Multiple-stressor effects on stream ecosystems; also natural drivers shaping stream communities +","Multiple-stressor effects on stream ecosystems +","Everything needed to run the experiments +","Dorms for researchers and students (http://www.esalq.usp.br/svee/Itatinga/Itatinga_Planta.pdf) +","Piggott, J.J., Salis, R.K., Lear, G., Townsend, C.R. & Matthaei, C.D. (2015) Climate warming and agricultural stressors interact to determine stream periphyton community composition. Global Change Biology, 21, 206-222. +>15 publications in scientific journals by C.D. Matthaei, J. J Piggott and coauthors (https://www.otago.ac.nz/zoology/staff/matthaei.html) +Blog post: https://jappliedecologyblog.wordpress.com/2015/07/03/exstream-study-assesses-stream-ecosystem-functioning-the-effects-of-climate-warming-multiple-agricultural-stressors/ +Short video about ExStream System research: https://vimeo.com/243219546 +",,,,,,"['-23.060634', ' -48.630102']","{'coordinates': ['-23.060634', '-48.630102']}",, +https://mesocosm.org/mesocosm/mesocosm-facility-at-umea-marine-sciences-center-mf-umsc/,Mesocosm Facility at Umeå Marine Sciences Center (MF-UMSC),Umeå Universitet (UmU),Sweden,Europe,"Umeå University (UmU)SE-90187 Umeå +SWEDEN +http://www.umf.umu.se/english/?languageId=1 +","Henrik Larsson +Please login or request access to view contact information. +",2007 to present,"Indoor – pelagic – marine, brackish, (freshwater), 12 tanks of 5 m depth, 2 m3 volume. +Outdoor- pelagic – marine, brackish, (freshwater), 24 tanks of 1 m3. Sediment may be added. +The facility is located close to the seashore in the northern part of the Baltic Sea. The water outside of the field station is ice covered for 3-5 months a year, and brackish with a salinity around 3 PSU. +The water intake to the indoor mesocosms is situated 800 m off-shore at 2 and 8 meter depths. The mesocosms can also be filled with sea, lake or river water transported from elsewhere. Filling can be done through filters of selectable mesh sizes, down to 1 μm, an semi-automatic water renewal system with controllable turnover rate are also available. The indoor facility consists of 12 cylindrical mesocosms with water columns 4.86 m high and 0.73 m in diameter (volume ca. 2 m3). Temperature can be controlled and manipulated in 3 different sections of each mesocosm. This enables for projects that require stratification, controlled convective stirring or both. +The light sources are Valoya R-258 (Light DNA), especially produced with the aim to closely mimic the spectra of the sun. These lamps are handled by time-programs that controls spectra and intensity according to lattitude and time of day.   +Four freezers are installed on top of every three mesocosms, this enables control of the air temperature above the water columns down to -20o C. Projects that require ice can thus be carried out, and parameters such as freezing or thawing rate can be adjusted. This latter option allows for systematic seeding experiments. +The ventilation of the mesocosm hall is controlled by the CO2 content in the room, allowing for natural controls in experiments where the CO2 content in the water is altered. +The outdoor facility is available during summer. It consists of 4 large pools, each carrying 6 cubic mesocosms of 1 m3. The temperature is kept the same as in the water intake by using high rates of water flow through in the pools. Experimental designs can be supported by long-term ecological research time series of variables stored in an easily accessible database on the internet. About 70 international researchers have used the mesocosm facility during numerous experiments conducted over the past 10 years. Outcomes include two publications in top-ranked scientific journals regarding methylmercury levels in coastal environments. +","Indoor: Temperature (-1o up to 30oC), stratification depth and strength, convective stirring in different levels, size fractionation of organisms in intake water (300 – 1 µm), light intensity and regime, adjustable water exchange, chemical parameters. +Outdoor: size fractionation of organisms in intake water (300 – 1 µm), chemical parameters. +","Land-sea interactions, climate change, and impact of environmental pollution on organism stoichiometry and health, taxonomic composition, predator-prey interactions, food web processes and efficiency. +"," + + + + + 63.5678349,19.8206221 + +",,"Mercury biogeochemistry, Impact of dissolved organic carbon on plankton respiration, growth and food web function, Fish population models and migratory behaviour. +","Two Seaguard CTD equipped with PAR, conductivity, temperature, turbidity, Chlorophyll, Oxygen, CDOM and pressure sensors. Spectrophotometer, spectrofluorometer, scintillation counter, and basic laboratory equipment including salinity and pH meters. +http://www.umf.umu.se/english/field-station/chemical-analyses/ +","Our hostel is situated a few hundred meters from the field station. Ten rooms with two beds each are available as well as a large kitchen with fridges, freezer and cooking facilities. Additional accommodation and restaurants are also available in nearby Hörnefors. +http://www.umf.umu.se/english/field-station/accommodation/ +http://www.umf.umu.se/english/field-station/biological-analyses/ +","http://www.umf.umu.se/english/?languageId=1 +http://www.umf.umu.se/english/field-station/the-mesocosm-facility/ +"," + + + +Indoor polyethylen mesocosms + + + + +Tanks with light and temperature control + + + + + + + + + + + + +Ice covered mesocosms at floor 2; Photo: M. Nordin +  +  + + + + + + + + + + + + + + + + + + +MF-UMSC indoor at floor 1; Photo: M. Nordin +MF-UMSC outdoor; Photo: K. Viklund + + + +  +","['http://mesocosm.org/wp-content/uploads/2017/03/Indoor-polyethylen-mesocosms.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/Tanks-with-light-and-temperature-control.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/ice-tanks_1-300x199.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/DSC_1798-300x199.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/DSC_1801-300x199.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/INDOOR-300x199.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/OUTDOOR-300x199.jpg']",,,,"['63.5678349', '19.8206221']","{'coordinates': ['63.5678349', '19.8206221']}",, +https://mesocosm.org/mesocosm/alpstream-eco-hydraulic-flumes/,ALPSTREAM ECO-HYDRAULIC FLUMES,ALPSTREAM – Alpine Stream Research Center/MONVISO PARK,Italy,Europe,"Frazione S. Antonio 17, +I-12030 Sant’Antonio Ostana (CN) +  +Or: +  +DBIOS – University of Turin, +Via Accademia Albertina, 13, +10123 Torino (Italy) +","Stefano Fenoglio +Please login or request access to view contact information. +Please login or request access to view contact information. +  +Francesca Bona +Please login or request access to view contact information.francesca.bona@unito.itPlease login or request access to view contact information. +",2023 - present,"The flumes system is fed with water coming directly from the Po river. By exploiting a natural pool and using a small barrier to regulate the water stage, water is made to flow into a pipeline connected to the flumes. The pipeline intake (diameter is 0.80 m) is placed close to the pool bottom; a metallic net protects the intake from coarse debris load, preventing the occlusion of the pipeline. Moreover, the rate of incoming water from the river can be regulated thanks to the presence of a sluice gate in front of the intake. +A 155 m long pipeline conveys flow from the intake to a loading tank, that acts as a dissipation reservoir and slows down the incoming flow. This main tank is connected to other three loading sub-tanks by means of three sluice gates, that can be completely opened (during the experiments), closed (for maintenance and cleaning) or partially closed (to regulate the flume flows). Each sub-tank feeds two channels, for a total of six flumes. Each flume is 25m long, 0.30m wide, 0.30m high and rectilinear. Each channel is made of a series of sub-channel units, connected together by screws. Some of these units have a widening (0.90m width) in the longitudinal direction which can be put in communication (by two sluice gates) with the main channel 0.3 m wide. In this way, these units can be used to simulate a pool habitat. Each flume bed is filled with natural substrate (i.e. boulders, cobbles and gravel) in a proportion which simulates the natural conditions characterizing the Po river in this stretch. Each couple of channels drain into a terminal tank. In total, three terminal tanks are connected together and convey water into a unique concrete shaft, connected to a pipeline that returns water to the river. If necessary, in two flumes  water can re-circulate by means of a pump which returns water into the upstream  sub-tank. Thus, these two channels can act as a closed-system.  +"," +Flow velocity +water levels and amount can be regulated just acting directly on the facility structure. +Other environmental or chemical parameters can be changed depending on the experiment (temperature, suspended solid sediment amount, light, nutrients or pollutants) + +"," +Stream ecology +primary instream production +allochthonous input degradation +diatom biology and diversity +aquatic macroinvertebrates biology and diversity +aquatic entomology +Alpine fish biology +climate change (experimental droughts and floods) +hydromorphological impact (total suspended solids amount, changes in substrate composition..) +stream eco-hydraulics and eco-hydrology +flow field features  in the near-bed zone and its impact on macrobenthos +hyporheic flows +pollutant transports +stream-hyporheic zone interactions + +"," + + + + + 44.6931944, 7.176777777777778 + +","Manipulative experiments will be carried out in order to analyze changes in benthic communities (i.e. diatoms and macroinvertebrate), induced by environmental and/or chemical impacts. Concerning primary producers, we are interested in analyzing possible changes in benthic chlorophyll a of the main autotrophic organisms colonizing periphyton (namely diatoms, cyanobacteria and green algae) and their proportions. Diatoms will also be analyzed at community level, focusing on both taxonomic and functional composition. +Macroinvertebrates will be analyzed at community level, focusing on taxonomic and functional composition. Main interests are related to eco-hydraulic impacts on benthic communities, especially in the frame of the current climatic scenario. We are also planning to perform life-cycle studies focused on selected aquatic insect taxa. +The flumes can be also utilized to perform ecological, behavioral and life-cycle studies concerning selected rheophilous and orophilous fish (such as Bullheads, Minnows et al.) +Flumes will be used to study the role of fluid dynamical characteristics of streams on benthic communities. From the basic features (e.g., water stage and bulk velocity) to more refined ones, like flow field and detachment zones close to sediments surface or the presence of bedforms (dunes, antidunes, ripples) and single obstacles. Moreover, the hydrodynamic impact of (totally or partially submerged) vegetation can be studied, as well as the influence of unsteady flows and surface waves. +"," +Ecology +Zoology +Phycology +Eco-hydraulics + +"," +Temperature dataloggers (water temperature registration) +multiparametric probe (measuring water pH, Dissolved oxygen, conductivity) +water flow meter +field spectrophotometer +fluorometric probe (Benthotorch, for benthic chlorophyll a measurement) +sampling devices for benthic communities + +","Facilities available in Ostana (1.5 km): guest house, hotels, B&B +","https://www.parcomonviso.eu/alpstream +","Flumes, photo credits: Francesca Bona +Aerial view flumes, photo credits: Anna Marino +from window of the ALPSTREAM lab, photo credits: Elisa Falasco +Guesthouse, photo credits: VisoaViso cooperative +Indoor space of the ALPSTREAM lab, photo credit: Stefano Fenoglio +Ostana landscape, photo credits: Stefano Fenoglio +","['http://mesocosm.org/wp-content/uploads/2023/03/Flumes-1024x413.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/aerial-view-flumes-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/from-the-window-of-the-ALPSTREAM-lab.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/guesthouse.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/indoor-space-of-the-ALPSTREAM-lab.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/Ostana-landscape.1.9MB-1024x768.jpg']",,,,"['44.6931944', ' 7.176777777777778']","{'coordinates': ['44.6931944', '7.176777777777778']}",, +https://mesocosm.org/mesocosm/yeosu-mesocosm-system/,Yeosu Mesocosm System,"Fisheries Science Institute, Chonnam National University",Republic of Korea,Asia,"50 Daehak-ro, Yeosu, Jeonnam 59626, Republic of Korea +","Prof. Ihn-Sil Kwak / Dr. Hyunbin Jo +Please login or request access to view contact information. +",,"in and outdoor – marine and fresh +The facility consists of a floating raft, nine impermeable enclosures with transparent caps (2,015 m^2) +","temperature, pH, nutrients, light levels +","Global warming, functional trait +"," + + + + + 34.627472,127.72033 + +"," +the effects of warming on fish health and growth +the interaction between phytoplankton and fish + +","Fisheries +","YSI multi-parameter probe +",,"http://jnufsi.jnu.ac.kr/user/indexMain.action?handle=1&siteId=jnufsi +"," + + + + + + + + + +Reconstruction plan + + + + +","['http://mesocosm.org/wp-content/uploads/2019/03/Yeosu-Mesocosm-System-1-300x226.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Yeosu-Mesocosm-System-2-300x227.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Yeosu-Mesocosm-System-3-255x300.jpeg']",,,,"['34.627472', '127.72033']","{'coordinates': ['34.627472', '127.72033']}",, +https://mesocosm.org/mesocosm/levend-lab/,Levend Lab,Leiden University,Netherlands,Europe,"Leiden University +Institute of Environmental Sciences +PO Box 9518 +2300 RA +Leiden +","Martina G. Vijver +Maarten Schrama +Peter van Bodegom +  +Vijver@cml.leidenuniv.nl +m.j.j.schrama@cml.leidenuniv.nl +p.m.van.bodegom@cml.leidenuniv.nl +",2016 - present," +48 x mesocosms 65 L, +38 x experimental ditches of 10 meter lenght, 30 cm depth and 60 cm width with grassland bufferzones around the ditches. The ditches are connected to open water but can also be closed. +36 x terrestrial mesocosms, surrounding with plants for terrestrial testing, +2 lab units + +",,"Ecological and ecotoxicological research +"," + + + + + 52.170726, 4.451855 + +","Impact of chemicals on community level impacts +"," +Aquatic and terrestrial communities +Cross-ecosystems + +"," +Basic lab equipment is available +more advanced lab equipment is available at the university (10 minutes biking distance) + +","Lodging can be organised in private accomodations in Leiden (walking distance) +","https://levendlab.com/ +  +Related Publications: +https://doi.org/10.3389/fenvs.2017.00075 +https://doi.org/10.1016/j.scitotenv.2018.03.021 +https://doi.org/10.1002/etc.4142 +  +"," + + + +Photo credit: + + + + +Photo credit: + + + + +","['http://mesocosm.org/wp-content/uploads/2018/10/1-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/2-1024x768.jpg']",,,,"['52.170726', ' 4.451855']","{'coordinates': ['52.170726', '4.451855']}",, +https://mesocosm.org/mesocosm/lake-baoan-field-station-of-experimental-limnological-research/,Lake Bao’an Field Station of Experimental Limnological Research,"State Key Laboratory of Freshwater Ecology and Biotechnology, Institute of Hydrobiology, Chinese Academy of Sciences",China,Asia,"No. 7 South Donghu Road,  Wuchang District, Wuhan 430072, Hubei Province, China +","Hai-Jun Wang +Please login or request access to view contact information. +",10 years,"33 experimental ponds (40,000 m2), 30 cement aquarium (1 m×1 m ×1 m each),a laboratory building with 6 labs (660 m2), a meteorological station, etc. +","Total nitrogen (TN), total phosphorus (TP), and underwater light condition +","The effects of high nitrogen on aquatic organisms and sediment phosphorus release; the effects of light condition on development of submersed macrophytes; Effect of nutrient loading on water quality and phytoplankton; factors affecting greenhouse gas emissions in fish ponds +"," + + + + + 30.28805,114.72916 + +","Effect of nutrient loading, factors influencing submersed macrophytes, ecological restoration, eutrophication mitigation,  greenhouse gas  emission, internal phosphorus release, ecotoxicology and risk assessments, nitrogen pollution +","The effects of high nitrogen on aquatic organisms and sediment phosphorus release; the growing condition for submersed macrophytes etc. +","YSI ProPlus (Yellow Spring Inc., USA), spectrophotometer, illuminance meter (KONICA MINOLTA, T-10, China), unmanned aerial vehicle (DJI, Phantom 3, China), Daphnia Toximeter (bbe moldaenke cn, Germany), sampling equipment of water, pore water, sediment, macrophytes, zoobenthos, plankton, etc. +","An apartment with 8 rooms and 1 yard (800 m2) +","Peer-reviewed publication in recent 5 years + +Yu et al., 2015. Effects of high nitrogen concentrations on the growth of submersed macrophytes at moderate phosphorus concentrations. Water Research, 83: 385-395. +Wang et al., 2017. Can short-term, small experiments reflect nutrient limitation on phytoplankton in natural lakes? Chinese Journal of Oceanology and Limnology, 35: 546-556. +Li et al., 2017. Total phytoplankton abundance is determined by phosphorus input: Evidence from an 18-month fertilization experiment in 4 subtropical ponds. Canadian Journal of Fisheries & Aquatic Sciences, 74 (9): 1454-1461. +Wang et al., 2017. Effects of high ammonia concentrations on three cyprinid fish: acute and whole-ecosystem chronic tests. Science of the Total Environment, 598: 900-909. +Yu et al., 2017. Does the responses of Vallisneria natans (Lour.) Hara to high nitrogen loading differ between the summer high-growth season and the low-growth season? Science of the Total Environment, 601-602: 1513-1521. +Yu et al., 2018. Higher tolerance of canopy-forming Potamogeton crispus than rosette-forming Vallisneria natans to high nitrogen concentration as evidenced from experiments in 10 ponds with contrasting nitrogen levels. Frontiers in Plant Science, 9. +Ma et al., 2018. High ammonium loading can increase alkaline phosphatase activity and promote sediment phosphorus release: a two-month mesocosm experiment. Water Research, 145: 388-397. +Yu et al., 2018. Reply to Cao et al.’s comment on “Does the responses of Vallisneria natans (Lour.) Hara to high nitrogen loading differ between the summer high-growth season and the low-growth season? Science of the Total Environment 601-602 (2018) 1513-1521. + +"," + + + +The aerial view of the experimental station + + + + +cement aquarium experimental system + + + + +Ponds for eutrophication experiments + + + + +Ponds for nitrogen pollution experiments + + + + +","['http://mesocosm.org/wp-content/uploads/2019/03/The-aerial-view-of-the-experimental-station-300x169.png', 'http://mesocosm.org/wp-content/uploads/2019/03/cement-aquarium-experimental-system-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Ponds-for-eutrophication-experiments-300x177.png', 'http://mesocosm.org/wp-content/uploads/2019/03/Ponds-for-nitrogen-pollution-experiments-300x189.png']",,,,"['30.28805', '114.72916']","{'coordinates': ['30.28805', '114.72916']}",, +https://mesocosm.org/mesocosm/tihany-outdoor-mesocosm-hungary/,Tihany Outdoor Mesocosm (Hungary),"Balaton Limnological Research Institute, Eötvös Loránd Research Network",Hungary,Europe,"Klebelsberg Kuno 3, +8237-Tihany, +Hungary +","Gergely Boros +  +Please login or request access to view contact information. +",starting in 2019,"The outdoor mesocosm facility consists of 12 outdoor cylindrical plastic tanks; each has a volume of 5 cubic meters and water depth of about 1.5 m. The sensors deployed in the mesocosms gauge the following parameters: dissolved oxygen, oxygen saturation, water temperature, pH, redox potential, conductivity, TDS, light irradiation. The tanks can be filled either with tap water, or with water from Lake Balaton filtered in three phases (gravel, – sand, – and UV filters). +"," +water temperature (electric heating cables are planted in each mesocosms) +light irradiation (at the top of each mesocosms there is has a LED lamp emitting a light spectrum similar to sunlight) +speed of water circulation (an airlift mixing system circulates the water in the mesocosms with adjustable carrying capacity) +nutrients in the water column +heating and additional light irradiation are controlled by a programmable logic controller (PLC) system + +"," +ecological stoichiometry; +effects of temperature (climate change) and nutrient load (eutrophication) + +"," + + + + + 46.9125, 17.893333333333334 + +"," +community ecology + +"," +freshwater ecology +environmental sciences + +"," +The mesocosm facility with its 12 tanks and the linked infrastructure; +well-equipped labs (for water quality analyses, stable isotope analyses, etc.) at the research institute; +indoor facilities for breeding and maintaining plants and animals for experiments; +offices for guest researchers + +","The Balaton Limnological Institute provides accommodation in its guesthouse (http://www.blki.hu/vendeghaz/index_en.html). +",," + + + +Foto credit: Ferenc Jordan + + + +  +Foto credit: Ferenc Jordan + + + + +Foto credit: Ferenc Jordan + + + + +​ +  +","['http://mesocosm.org/wp-content/uploads/2018/11/Tihany-5-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/IMG_20181024_094852-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/IMG_20181024_104918-1024x768.jpg']",,,,"['46.9125', ' 17.893333333333334']","{'coordinates': ['46.9125', '17.893333333333334']}",, +https://mesocosm.org/mesocosm/sites-aquanet-svartberget-research-station/,SITES AquaNet – Svartberget Research Station,SITES and Swedish University of Agricultural Sciences,Sweden,Europe,"Sveriges lantbruksuniversitet (SLU) +Unit for Field-based Forest Research +Svartberget Research Station +SE-922 91 Vindeln +Sweden. +","Tomas Lundmark +Please login or request access to view contact information. +",2017 - present," +Open access to national and international researchers. +Outdoor, freshwater, deployed in an adaptable jetfloat, placed in lake Stortjärn, 2,5 km from the research station. +PE-film enclosures or 20 hardshell PE enclosures (ø = 0.9 m, depth = 1.5 m, volume = 700 l) + +",,"Advanced general understanding in ecology by using modularized experiments across SITES-AquaNet stations (Sweden) or potential collaborators (Sweden, Europe and other continents). Topics: Forest stand development, plant physiology, systemic water transport, forest management strategies, nutrient limitation, biodiversity-functioning-stability relationships, community ecology, biogeochemistry, atmospheric flux, global change research. On-site climate data, incl. temperature profile measurements. +"," + + + + + 64.143965, 19.455836 + +",,,"Apogee SQ-500 (PAR), CTG Trilux fluorometer (chlorophyll-a, phycocyanin and turbidity) and Aanderaa 4531 optode (O2 and temperature) sensors fulltime deployed in each enclosure, deployed with a Campbell CR1000 datalogger and an AM16/32B multiplexer (https://www.campbellsci.com). The datalogger has an ethernet interface for remote access through a mobile broadband router, for maintenance and data retrieval. Surveillance camera mounted for remote monitoring of the site. +An AP-2000 AquaRead Multiprobe (http://www.aquaread.com/portofolio/ap-2000/) equipped with a chlorophyll sensor, and an Apogee MQ-500 (PAR) sensor with handheld meters. +Laboratory for filtering and extraction of samples for a wide range of analyses, cold storage and freezing rooms are available at the research station. Connection to laboratories for analysis at the SLU Stable Isotope Laboratory (http://www.slu.se/ssil/), the Erken Laboratory (http://www.ieg.uu.se/erken-laboratory) and Umeå University. +","Accommodations at the field station itself are currently under construction. Rooms for rent at Hotel Forsen (6.3 kilometers from the station) and Hotel Vindelngallergian (7.6 kilometers from the station). +","SITES (AquaNet, Water and Spectral initiatives, http://www.fieldsites.se) +ICOS (http://www.icos-sweden.se). +"," + + + +Photo credit: Peder Blomkvist + + + + +Photo credti: Peder Blomkvist + + + + +  +","['http://mesocosm.org/wp-content/uploads/2018/05/Svartberget_2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Svartberget_3-768x1024.jpg']",,,,"['64.143965', ' 19.455836']","{'coordinates': ['64.143965', '19.455836']}",, +https://mesocosm.org/mesocosm/cambridge-environmental-assessments-cea/,Cambridge Environmental Assessments (CEA),RSK ADAS Ltd,United Kingdom,Europe,"Cambridge Environmental Assessments, ADAS Boxworth, Cambridgeshire, CB23 4NN +","Dr Nadine Taylor +Please login or request access to view contact information. +",2009 to present.,"Outdoor freshwater static mesocosm systems. +We have 99 flat bottomed and 100 unique sloped mesocosms which are designed to simulate edge of field environments. Our sloped mesocosms were installed in 2013, are 2.6 m long, 1 m wide and 0.7 m deep and are used for herbicide studies. The sloped mesocosms are designed to enable the incorporation of a wide variety of plant species, providing a habitat which mimics the plant community found in edge of field environments. Our flat bottomed mesocosms were installed in 2009, are 1.8 m long, 0.9 m wide and 0.8 m deep and are predominantly used in pesticide studies. +Indoor laboratories. +We have a GLP laboratory facility in which we can carry out higher tier chronic testing on multiple and single species under controlled conditions. +"," +Outdoor mesocosms: Plant community, water depth, test item present, initial organism establishment +Indoor laboratories: Environmental parameters (including temperature, pH,  oxygen and light/dark cycles), species present, sediment/substrates, feeding regimes + +","At CEA we produce robust population and community endpoints (ETO RAC and ERO RAC) that meet the requirements of the EFSA (2013) aquatic guidance. We conduct mesocosm studies on both herbicide and pesticide products and can carry out the application of our test item in several ways (e.g. mix-in, spray-over) and perform single or multiple applications as required. +"," + + + + + 52.252916,-0.031916 + +","Chemical risk assessment, primarily determining regulatory endpoints for various agrochemicals +"," +Higher tier freshwater aquatic testing to Good Laboratory Practice (GLP) standards. +Bespoke experimental design +Identification of freshwater phytoplankton, periphyton, macrophytes, zooplankton, macroinvertebrates and emergent insects +Statistical analysis of data generated to current guideline requirements + +"," +Indoor laboratories for acute and chronic higher tier testing +Probes for monitoring temperature, pH, conductivity, dissolved oxygen and turbidity +Sampling equipment to collect zooplankton and phytoplankton +Periphytometers to allow the periphyton community to be sampled quantitatively +Emergent insect traps +Sediment sampling apparatus +Depth integrated water samplers (DIWS) +High accuracy scales for formulation of test item +Bioassay cages and bags to house organisms within our mesocosms +GLP storage facilities + +","Local hotels available near to the site. +","http://www.cea.adas.co.uk/Services/Ecotoxicology-and-risk-assessment +"," + + + +Established flat bottomed mesocosms (Credit: Cambridge Environmental Assessments) + + + + +Established sloped mesocosms (Credit: Cambridge Environmental Assessments) + + + + +Established sloped mesocosms (Credit: Cambridge Environmental Assessments) + + + + +Set-up of sloped mesocosms prior to a study (Credit: Cambridge Environmental Assessments) + + + + +","['http://mesocosm.org/wp-content/uploads/2019/03/Established-flat-bottomed-mesocosms-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Established-sloped-mesocosms-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Established-sloped-mesocosms-2-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Set-up-of-sloped-mesocosms-prior-to-a-study-300x225.jpg']",,,,"['52.252916', '-0.031916']","{'coordinates': ['52.252916', '-0.031916']}",, +https://mesocosm.org/mesocosm/carl-von-ossietzky-university-oldenburg/,Planktotrons - Indoor Mesocosm Facility,Carl-von-Ossietzky University Oldenburg,Germany,Europe,"Carl-von-Ossietzky University Oldenburg +Institute for Chemistry and Biology of the Marine Environment (ICBM) +Schleusenstr. 1 +26382 Wilhelmshaven +Germany +","Prof. Dr. Helmut Hillebrand +Dr. Maren Striebel +Please login or request access to view contact information. +",started in 2014,"indoor (outdoor) – freshwater/marin – pelagic/benthic +12 indoor mesocosms with 600 l volume (height 120 cm, diameter 80 cm) for marine or freshwater experiments and natural or artificial communities +3 temperature zones: upper half, lower half, and bottom +Build-in rotor prevents wall growth +Six ports at different levels of the water column for direct sampling +Planktotrons can be connected for metacommunity approaches +Sediment inclusion possible +","Temperature: from 5-25°C for constant temperature (higher for heat wave simulations) +Light: LED-lights simulate daylight with different intensities +","Phytoplankton, ciliates, zooplankton, food web, biodiversity, metacommunities +"," + + + + + 53.5151,8.146219999999971 + +",,,"Temperature monitoring system, wet labs, climate chambers, chemical and biological analysis +","Dormitory with different rooms for up to 30 sleeping guests, kitchen facilities, auditorium that holds up to ca. 50 persons +","www.planktotrons.de + +www.icbm.de +"," + + + + + + + +Plankrtotrons in Wilhelmshaven + + + + +","['http://mesocosm.org/wp-content/uploads/2017/05/planktotrons_1_400.png', 'http://mesocosm.org/wp-content/uploads/2017/05/Planktotrons_2_400.png']",,,,"['53.5151', '8.146219999999971']","{'coordinates': ['53.5151', '8.146219999999971']}",, +https://mesocosm.org/mesocosm/kiel-indoor-benthokosmen-zur-simulation-von-umweltfluktuationen/,Kiel-Indoor-Benthocosms (KIBs),GEOMAR-Helmholtz Center for Ocean Research Kiel,Germany,Europe,"GEOMAR-Helmholtz Center for Ocean Research Kiel +West shore campusDüsternbrooker Weg 20D-24105 Kiel +East shore campusWischhofstr. 1-3D-24148 Kiel +","Dr. Christian Pansch +cpansch(at)geomar.de +",,"Indoor – Pelagic/Benthic – Marine/Brackish +Indoor (air-conditioned rooms) infrastructure consisting of 12 independent 600 liter tanks. Based on a computer controlled system, artificial fluctuations of diverse parameters can be simulated in through-flowing seawater +","temperature, salinity, pH and irradiation (oxygen in progress) +","Variability impacts from: temperature, salinity, pH and irradiation (oxygen in progress) – from single species to communities +"," + + + + + 54.330034, 10.148140 + +",,"fluctuation scearios in flow through systems +","12 independent experimental units (infinite subunits in these tanks), heaters, coolers, automated, heat exchangers, internal circulation, flow through system, programmable climate simulation +",,"http://www.geomar.de/en/ +Media report: Window on future ocean +Pansch, C. and Hiebenthal, C. (2019), A new mesocosm system to study the effects of environmental variability on marine species and communities. Limnol Oceanogr Methods, 17: 145-162. https://doi.org/10.1002/lom3.10306  +","  +  + + + + +Photo: Christian Pansch + + +Photo: Christian Pansch + + + + +Drawings: Dar Golomb & Christian Pansch + + + + +Drawings: Dar Golomb & Christian Pansch + + + + +Graphic: Christian Pansch + + + + +  +","['http://mesocosm.org/wp-content/uploads/2018/04/IMG_6896-e1523449384719-200x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2018/04/IMG_6905-e1523449507437-200x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2018/04/A-264x300.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/B-300x181.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/C-300x222.jpg']",,,,"['54.330034', ' 10.148140']","{'coordinates': ['54.330034', '10.148140']}",, +https://mesocosm.org/mesocosm/metu-mesocosm-system/,METU Mesocosm System,Middle East Technical University (METU),Turkey,Europe,"Orta Doğu Teknik Üniversitesi (ODTÜ), Middle East Technical University (METU), Üniversiteler Mahallesi, Dumlupınar Bulvarı No:1 06800 Çankaya Ankara/TURKEY, 06800 +","Prof.Dr. Meryem Beklioğlu +","2011, 2012",,"water depth and nutrients (both TP and TN) +","Role of water level on ecosystem processes (e.g. C and  N) as well as impact of food additives (TiO2) on food web structure and ecosystem processes +"," + + + + + 39.8897009,32.7520139 + +","Role of hydrological alteration on ecosystem structure and function of shallow lakes +",,,,"http://limnology.bio.metu.edu.tr +"," +Photo: METU-Limnology Labratory +",['http://mesocosm.org/wp-content/uploads/2017/02/METU-300x204.jpg'],,,,"['39.8897009', '32.7520139']","{'coordinates': ['39.8897009', '32.7520139']}",, +https://mesocosm.org/mesocosm/ceint-center-for-the-environmental-implications-of-nanotechnology/,CEINT-Center for the Environmental Implications of Nanotechnology,Duke University,USA,North-America,"Duke University + 134 Chapel Drive + Durham NC 27708 + USA +","Dr. Mark Wiesner +Please login or request access to view contact information. +",2009-present,"outdoor/indoor – pelagic/benthic – freshwater + The CEINT Mesocosm Facility is home to 30 complex simulated wetland ecosystems, mesocosm dimensions are 1 x 4 m with 1 compartment floor and 1 compartment water +","temperature, light, nutrients +","nanomaterial transport, transformation, ecological interactions, biouptake and biological interactions +"," + + + + + 36.0241591,-78.911455 + +",,,,,"http://www.ceint.duke.edu/facilities +"," + + + + +CEINT Mesocosm Facility   + + + + + +CEINT Mesocosm Facility   + + + + +","['http://mesocosm.org/wp-content/uploads/2017/05/Duke_mesocosms.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Duke_mesocosmsBPE.jpg']",,,,"['36.0241591', '-78.911455']","{'coordinates': ['36.0241591', '-78.911455']}",, +https://mesocosm.org/mesocosm/lake-mesocosms/,Lake Mesocosms,Ludwig-Maximilians-University (LMU) Munich,Germany,Europe,"Ludwig-Maximilians-University (LMU) Munich + Department Biology II + Aquatic Ecology + Grosshaderner Str.2 + Germany +","Prof. Herwig Stibor + Dr. Maria Stockenreiter +Please login or request access to view contact information. +",1997 - present,"outdoor in lake – pelagic – freshwater + Up to 60 mesocosms (1 m diameter 0.5-15 m long) attached to raft or floating ring in the lake +","Temperature, light, nutrients, species composition, mixing, stratification depth +","Plankton ecology, climate change scenarios, stoichiometry, predator-prey systems, resource competition, biodiversity und community assembly +"," + + + + + 47.9745129,12.46009749999996 + +",,,"Field station with C-mat,  CN analyser, Dionex, wet lab, microscopes, nutrient analyses, Multispectral PAM, 8-LED-based Algal Lab Analyzer, Spectroradiometer, climate chamber + access to lake in protected area +","small kitchen, seminar room +","http://www.aquatic-ecology.bio.lmu.de/fieldstation/index.html +"," + + + + +Mesocosm installation with raft and floating rings in Lake Brunnsee (Photo: Stibor) + + + + + +Mesocosm installation – view of the bags under water (Photo: Stibor) + + + + +","['http://mesocosm.org/wp-content/uploads/2017/05/Seeon_1_400px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Seeon_2_400px.jpg']",,,,"['47.9745129', '12.46009749999996']","{'coordinates': ['47.9745129', '12.46009749999996']}",, +https://mesocosm.org/mesocosm/mesodrome/,University of Antwerp MESODROME,University of Antwerp,Belgium,Europe,"University of Antwerp, Dep. Biology +Universiteitsplein 1 +2610 Wilrijk +Belgium +","Ronny Blust +Ronny.blust@uantwerpen.be +","Module I fully functional, Module II (Drie Eiken Flume) epected in 2019","The mesocosm facility at Drie Eiken (figure 1) consists of two modules. Module I holds 16 cylindrical ponds 2 m wide on 1.2 m deep (water depth), module II is equipped with 4 oblong raceways, each 2 x 5 m long (the water circulates around a mid-section) and 80 cm deep (water depth). The raceways are temperature controlled and allow accurate flow control. They are equipped with windows for easy monitoring of organismal behavior and/or plant stature. Module II also houses the larger flume facility (black box in figure 2, see also § 3.2 Flume facility Drie Eiken). Additionally module II holds aquaculture infrastructure for fish stocking. Both modules are integrated in a 1000 m² greenhouse. In module I the roof can be completely opened as to expose the ponds to the elements, whenever necessary in the experimental setup, module II has a classical greenhouse setup. The latter module also integrates a small wet lab facility for basic lab work, e.g. dissections, determinations, microscopy, weighing, etc. +","Water quality & depth +Pollution concentration (water & sediment) +Flow and temperature in river systems +"," +Stress related changes in ecosystems at multiple levels of biological organization. +Bioavailability and effects of sediment-bound pollutants +The toxicity of mixtures on aquatic communities +Interactions between pollutant and predator stress in aquatic food chains +Validation of transcriptomics and proteomics derived biomarkers +Long term studies on global change related issues +Feeding and continuous exercise in fish physiology + +Biological-geomorphological interactions in tidal wetlands +"," + + + + + 51.155424, 4.409210 + +",,,"All facilities are equipped with all necessary (remote) sensors and loggers, e.g. flux meters, dissolved oxygen, temperature, turbidity, pH, conductivity, … The greenhouse itself has full climate monitoring and (limited) temperature control during winter time. The dimensions and structure of the greenhouse allow for future extension of the aquatic infrastructure including compartmentalization of the housing for full climate control (including atmosphere). The complete system is supported by a water treatment facility to allow environmental friendly effluent control and disposal. +","Nearby in private accommodation +","www.uantwerpen.be/sphere.be +www.uantwerpen.be/ecobe +"," + + + +Credit: Eric Struyf + + + + +",['http://mesocosm.org/wp-content/uploads/2018/05/Mesodrome_tech-drawing-300x115.jpg'],,,,"['51.155424', ' 4.409210']","{'coordinates': ['51.155424', '4.409210']}",, +https://mesocosm.org/mesocosm/estacion-de-ciencias-marinas-de-toralla-ecimat/,Estación de Ciencias Mariñas de Toralla (ECIMAT),University of Vigo,Spain,Europe,"Illa de Toralla +E-36331 Coruxo +Vigo +Galicia (Spain) +","Antonio Villanueva (Manager at ECIMAT) +Jose González +  +antonio.villanueva@ecimat.org +josegonzalez@uvigo.es +","discontinuous experimentation in mesocosms for more than 10 years, although facilities were totally renovated in 2015"," +Floating platform with 6 floating rings for bags with 1.2 m diameter. +Land-based system with pelagic/benthic experimentation tanks. + +","Temperature, light, nutrients, species composition +","Marine Ecology and Ecotoxicology, Aquaculture, Physical Oceanography and Marine Geology +"," + + + + + 42.201979, -8.798505 + +",,,"Toralla Marine Science Station provides the following support services to marine researchers: + +Supply of Marine Organisms, Water and Culture media +Use of Laboratories, Scientific Equipment and other Infrastructures +Sample Processing and Analysis +Support Services to Research Activities at Sea (Boats, Sampling Support, Diving Jobs, Diving equipment, etc.) +Other Support Services to Research (Development of Experimental Cultures, Technical Advising on Marine Organisms Experimentation, etc.) +Real-time monitoring of oceanographic and meteorological variables + +","various size apartments available +","http://www.ecimat.org +","Photo credit: Alba Hernández + + + +  + + + +Photo credits: Alba Hernández + + + + +Photo credits: Jose Gonzalez Fernandez + + + + +  +","['http://mesocosm.org/wp-content/uploads/2018/04/5B25D5A7-B59A-480E-93EF-F72F6D49B420-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/FCDD4CA6-6509-4CFE-BE24-51C6D14BCC65-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/897C6409-336F-4357-9831-3D0F71827349-1024x768.jpg']",,,,"['42.201979', ' -8.798505']","{'coordinates': ['42.201979', '-8.798505']}",, +https://mesocosm.org/mesocosm/smart-ecolake/,Smart Ecolake,"Nanjing Institute of Geography and Limnology, Chinese Academy of Sciences (NIGLAS)",China,Asia,"73 East Beijing Road, +Nanjing 210008, +P.R.China +","Dr. Jianming Deng +Please login or request access to view contact information. +",2023 - present," +72 tank totally, (potentially to be extended in the future) with 2.3 meters diameter +Sediment 40cm, depth of water 1.3 meters, while the tanks are 1.8 meters deep. (volume of ca. 5.4 m3) +Smart Ecolake located in Suzhou, Jiangsu China, just near Lake Taihu, 1.4meters located underground) +The facility is permanently staffed with four scientists and two technicians. Additionally ca. 10 students are working there. + +"," +Temperature +Disturbance (caused by wind) +Nutrient levels (both, TN and TP) + +","The processes and mechanisms of shallow lakes responding to global changes and the feedbacks "," - 47.40515,8.60855 + 31.03,120.42 -",,,"Indoor laboratories for sample processing -Sampling bridges for easy access to water column -Sampling equipment for phyto- and zooplankton -Exo2 Multiparameter Sonds for automated measurement of water quality parameters -","Hotels and Eawag guest house nearby -","https://www.eawag.ch/de/ueberuns/arbeiten-an-der-eawag/forschungsumfeld/versuchsteichanlage/ "," +Circulation and fate of biogenic elements in lakes among different habitats under global change (Physical Limnology) +Paths and mechanisms of the impact of global change on the structure, process and function of lake ecosystems (Biology) +Spatio-temporal differences and driving factors of greenhouse gas emission fluxes in lakes with different habitats (Geochemnistry) +","Global change limnology +"," +Temperature sensors +water level sensors +water flow meters +electric heating system +automation for e.g. nutrient and water supplementation + +",,"www.ecolake.net +","EcoSmart mesocosm facility  whole view, photo credits: Jianming Deng +Mesocosm close up, photo credit: Jianming Deng +","['http://mesocosm.org/wp-content/uploads/2023/12/Whole-View_1.9MB-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/single-tank-1024x683.jpg']",,,,"['31.03', '120.42']","{'coordinates': ['31.03', '120.42']}",, +https://mesocosm.org/mesocosm/imdea-water-institute/,IMDEA Water Institute,IMDEA Water Foundation,Spain,Europe,"IMDEA Water Institute +Avenida Punto Com 2 +PO Box 28805, Alcala de Henares +Madrid (Spain) +","Andreu Rico:  andreu.rico@imdea.org +Marco Vighi:  marco.vighi@imdea.org +",2016-present,"The mesocosm facility at the IMDEA Water Institute (Central Spain) consists of 9 independent stream channels (9 m length, 0.3 m depth; 0.3 m width), 24 lotic systems containing about 1 m3 of water and sediment, and a biodiversity lagoon of about 30 m3 equipped with a green filter. The mesocosm facility allows the design of experiments with several controls and treatments with replication and is perfectly suited to represent scenarios such as those used for the regulatory risk assessment of chemicals in Europe. +"," +Water physico-chemical parameters (DO, T, pH, EC, Alkalinity, etc.) +Nutrient concentrations +Chemical exposure concentrations in water and sediment +Biological responses at the population and community level: phytoplankton, macrophytes, zooplankton and macroinvertebrates +","Environmental fate of chemicals and calculation of degradation rates +Assessment of the adverse effects of chemicals on several biological endpoints and derivation of safe environmental concentrations +Evaluation of the interaction between multiple stressors (chemical and non-chemical) on aquatic ecosystems +"," -Image 1: Eawag’s Experimental Pond Facility in Dübendorf, Switzerland. Picture taken in summer 2016, shortly after the construction of the facility. Photo credit: Christoph Vorburger + 40.5133474, -3.3386556000000382 + +","We are mainly engaged on academic research projects but also open for collaboration with the regulatory and industry sectors. Please do not hesitate to contact us. +",,"A wide range of measuring and sampling devices are available for the evaluation of chemical and biological endpoints. Our mesocosm facility is located few meters away to our analytical chemistry lab, which is specialized on the analysis of pesticides and pharmaceuticals in environmental matrices +","Can be arranged upon request +","http://water.imdea.org/ +","  -Image 2: Schematic cross-section of an experimental pond. Image credit: Eawag +Photot: Michelle Jansen +  -Image 3: Scientists taking samples at Eawag’s Experimental Pond Facility in Dübendorf, Switzerland. Photo credit: Eawag +Photo: Andreu Rico +  -","['http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-1-300x186.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-2-300x156.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-3-300x174.jpg']",,,,"['47.40515', '8.60855']","{'coordinates': ['47.40515', '8.60855']}",,, -https://mesocosm.org/mesocosm/cmu-biological-station-mesocosm-facility/,[TEST CASE] Identifier: same with some other mesocosm; Location: same with some other mesocosm,"CMU Biological Station, Central Michigan University",USA,North America,"P.O. Box 206, -Beaver Island, -MI 49782 -USA -","Don Uzarski -Please login or request access to view contact information. -",2012 - present," -12 fibreglass tanks each 250 gallons -including metal halide -timer-controlled lights -housed on Lake Michigan with access to epilimnetic and metalimnetic water -"," -Light -Temperature +Photo: Andreu Rico + + +Photo: Andreu Rico -"," -Predator-prey interactions -microplastic impacts -sediment contaminants -macrophyte-phytoplankton interactions -fish behavior -nutrient impacts + + +  +","['http://mesocosm.org/wp-content/uploads/2018/04/IMG_2170-300x181.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/20160519_121359-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/20170512_154035_resized-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/IMG-20170512-WA0010-300x169.jpg']",,,,"['40.5133474', ' -3.3386556000000382']","{'coordinates': ['40.5133474', '-3.3386556000000382']}",, +https://mesocosm.org/mesocosm/experimental-streams-facility-esf/,Experimental Streams Facility (ESF),ICRA (Catalan Institute for Water Research),Spain,Europe,"ICRA Catalan Institute for Water Research +Carrer Emili Grahit 101 +17003 Girona +Spain +","Vicenç Acuña +Please login or request access to view contact information. +",2012 - present,"The facility has 24 artificial streams, divided into 4 experimental blocks. The dimensions of each stream are 2 m long, 10 cm wide, rectangular section 50 cm2 +"," +Hydraulics (0,01 to 0,1 L/s allowing 2-50 min travel time) +Hydraulics circulation type: recirculating or flow-through +Light cycles and light intensity +Water temperaure values and cycles +Air temperature (from 4-40ºC) +Air humidity +Chlorine concentration +Dissolved oxygen + +","Broadly speaking, research at the ESF deals with ecology or eco-toxicology. In regards to ecology, we are mainly interested in the effects of flow intermittency and temperature, whereas the main ecotoxicological topics are multi-stressor effects. In this direction, we often work with emerging contaminants effects, bioaccumulation, biodegradation, and biomagnification. "," - 45.7422222,-85.50944444444444 + 41.967303, 2.840650 +","Ecological research: + +What’s the relationship between intermittency temporal extent on stream ecosystem processes? +Will warmer nights cause a shift towards heterotrophy? +How relevant are heatwaves in shaping stream communities? +Does intermittency influence the length of trophic invertebrate chains? + +Ecotoxicological research: + +What’s the interaction between physical stressors such as water stress during droughts and chemical stress by pharmaceuticals? +Does biodegradation of pharmaceuticals depend on temperature? +Is bioaccumulation of pharmaceuticals in biofilms and inverts depend solely on exposure? + +","Stream ecology and freshwater ecotoxicology +"," +Climate chamber with temperature and humidity control +Rainwater harvesting, storage and conditioning for experiments +24 experimental stream channels +36 LED lights (Lightech, Girona, Spain) +4 quantum sensors (LI-192SA, LiCOR Inc, Lincoln, USA) +4 cryo-compact circulator (Julabo CF-31, Seelbach, Germany) +12 Temperature data loggers VEMCO Minilog (TR model, AMIRIX Systems Inc, Halifax, NS, Canada) +4 peristaltic pump (IPC pump, Ismatec,Switzerland) + +","in private accommodation in the vicinity +","http://www.icra.cat/seccio.php?id=5&lang=3 "," -Invasive species -eutrophication -climate change -","Laurentian Great Lakes -","YSI multiprobes -","on site -","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx -","photo credits: CMU Communications -",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}",,, -test 1,[TEST CASE] Aquatron Laboratory,Dalhousie University Life Sciences Centre,,North-America,"Dalhousie University Life Sciences Centre + + +Photo credit: Vicenç Acuña + + + + +Photo credit: Vicenç Acuña + + + + +  +","['http://mesocosm.org/wp-content/uploads/2018/05/image003.jpg@01D3EBA2.451771B0.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/image002.jpg@01D3EBA2.451771B0.jpg']",,,,"['41.967303', ' 2.840650']","{'coordinates': ['41.967303', '2.840650']}",, +https://mesocosm.org/mesocosm/aquatron-laboratory/,Aquatron Laboratory,Dalhousie University Life Sciences Centre,Canada,North-America,"Dalhousie University Life Sciences Centre 1355 Oxford Street PO BOX 15000 Halifax, Nova Scotia Canada, B3H 4R2 ","John Batt Please login or request access to view contact information. -",,,"temperature, stratification, light, etc. +",,"indoor – pelagic – marine/freshwater + The Aquatron is well suited to accommodate almost any lab-based aquatic experiment. It boasts six large tanks holding a combined volume of over 2,000 m3, as well as a wide variety of smaller tanks, research spaces and equipment. + Pool Tank: + Diameter: 15.24 m + Depth: 3.54 m perimeter to 3.91 m center (11’7½” to 12’10”) + Volume: 684,050 litres (150, 477 gallons) + The tank is made from reinforced concrete, with a glass reinforced polyester liner sealed with an epoxy coating. The tank itself sits atop a concrete tank stand with neoprene blocks sandwiched in between to partially acoustically uncouple the tank. + The main deck is located at the top of the tank allowing access to all points of the tank surface. In addition to the main tank, there is an adjoining satellite tank and three associated rooms. The small isolation pool is connected to the main tank via a tunnel, which is 0.96 m wide, 1.12 m deep and 2.74 m long. The tunnel can be divided with drop gates at either end. + The satellite tank is 1.12 m deep, and approximately 1.8 m in diameter. Of the rooms, the first is a viewing room with a large glass window allowing a complete view of the tank surface. The second room is a large wet lab with flowing seawater and freshwater. The third room is located just above the tank and serves as a base of operations for the tank users. + Twenty-two underwater glass viewing ports, approximately 1m2 in size, are located around the perimeter of the tank. Windows are located at various depths to allow viewing at all levels of the tank. The windows are accessed through a viewing deck located below the main deck. + Tower Tank: + Diameter: 3.66 m (34’4”) + Depth: 10.46 m (12’) + Volume: 117,100 litres (25,750 gallons) + The tank is constructed of reinforced concrete and is lined with a glass reinforced polyester liner sealed with an epoxy coating. The tank is separated from the building via neoprene blocks, which are sandwiched between the tank and the tank stand. + The tank can be divided into three layers of water with each layer having different physical parameters. Water sampling can be performed through the sampling ports arranged throughout the wall of the tank. The tank is also equipped with a series of viewing ports (25 of which are suitable for human observation or for use with video equipment). + The tank is completely insulated with insulated window port covers to minimize sweating and condensation. Without the insulation, water would rain down into the building basement causing flooding. + The Tower Tank spans four floors in the Oceanography Tower of the Life Sciences Building. The top of the tank rises just above the fourth floor with the bottom ending just about even with the first floor. The Tower Tank has three associated lab platforms that function primarily as locations for data collection equipment. These lab platforms are located on the first, third and fourth floor levels. Access to the tank can be through each of the lab platforms. Access to the main drain on the bottom of the tank is through the basement, below the first floor. +","temperature, stratification, light, etc. ","Animal behaviour, ballast water, flood containment, invasive species "," @@ -376,88 +5258,63 @@ Aquatron Laboratory: Phytoplankton cultivation -","['http://mesocosm.org/wp-content/uploads/2017/05/aquatronS.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Aquatron-empty_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/halifax_pool_calltoaction.image_.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/featureslide.image_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron1_400.jpg']",,,,"['44.6356125', '-63.5944334']","{'coordinates': ['44.6356125', '-63.5944334']}",,, -test 2,[TEST CASE] IMDEA Water Institute,IMDEA Water Foundation,Spain,Europe,"IMDEA Water Institute -Avenida Punto Com 2 -PO Box 28805, Alcala de Henares -Madrid (Spain) -","Andreu Rico:  andreu.rico@imdea.org -Marco Vighi:  marco.vighi@imdea.org -",,,,"Environmental fate of chemicals and calculation of degradation rates -Assessment of the adverse effects of chemicals on several biological endpoints and derivation of safe environmental concentrations -Evaluation of the interaction between multiple stressors (chemical and non-chemical) on aquatic ecosystems +","['http://mesocosm.org/wp-content/uploads/2017/05/aquatronS.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Aquatron-empty_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/halifax_pool_calltoaction.image_.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/featureslide.image_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron1_400.jpg']",,,,"['44.6356125', '-63.5944334']","{'coordinates': ['44.6356125', '-63.5944334']}",, +test 1,[TEST CASE] Country: data unavailable,Dalhousie University Life Sciences Centre,,North-America,"Dalhousie University Life Sciences Centre + 1355 Oxford Street + PO BOX 15000 + Halifax, Nova Scotia + Canada, B3H 4R2 +","John Batt +Please login or request access to view contact information. +",,,"temperature, stratification, light, etc. +","Animal behaviour, ballast water, flood containment, invasive species "," - 40.5133474, -3.3386556000000382 + 44.6356125,-63.5944334 -","We are mainly engaged on academic research projects but also open for collaboration with the regulatory and industry sectors. Please do not hesitate to contact us. -",,,"Can be arranged upon request -","http://water.imdea.org/ -","  +",,,"These world-class facilities are backed by our mechanical system, which can provide high quality, temperature controlled seawater and freshwater year round, as well as a professional team of both biologists and mechanical operators who are available to run the systems and help researchers. 16 wet labs. +",,"http://www.dal.ca/dept/aquatron.html +http://www.dal.ca/dept/aquatron/facilities/tower_tank.html +http://www.dal.ca/dept/aquatron/facilities/pool_tank.html +"," -Photot: Michelle Jansen -  +Aquatron Laboratory in Halifax, Nova-Scotia, CA -Photo: Andreu Rico -  -Photo: Andreu Rico -Photo: Andreu Rico +Aquatron laboratory: Pool tank -  -","['http://mesocosm.org/wp-content/uploads/2018/04/IMG_2170-300x181.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/20160519_121359-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/20170512_154035_resized-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/IMG-20170512-WA0010-300x169.jpg']",,,,"['40.5133474', ' -3.3386556000000382']","{'coordinates': ['40.5133474', '-3.3386556000000382']}",,, -test 8,[TEST CASE] Non-latin characters (Chinese simplified),,China,Asia,____,____,2020 - present,___________,__,"______________ -_______"," - 45.7422222,-85.50944444444444 - -","______________ -_______","______________ -_______",____,"on site -","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx -","photo credits: CMU Communications -",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}",,, -test 9,[TEST CASE] Non-latin characters (Arabic),__ ____ ______,___,_______,__ ____ ______,__ ____ ______,2021 - present,_____ _____ _____ _________ __ Eawag __ Dübendorf __ 36 ____ ______ ______ __ _________ ______ ________ ________. ____ ___ _____ 1.5 ___ __ ___ ___ __ ____ ____ (0.5 ___)_ _______ __ ___ ___ 15 _____ ______ __ ______ ______. ____ _____ _____ ______ _____ _______ ___ _______.,____ _______,_______ ________ _______," +Aquatron Laboratory: Tower tank sysem - 45.7422222,-85.50944444444444 - -",__ ____ ______,__ ____ ______,__ ____ ______,"on site -","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx -","photo credits: CMU Communications -",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}",,, -test 10 ,[TEST CASE] Non-latin characters (Greek),___ _�______ ________,Greece,Europe,___ _�______ ________,___ _�______ ________,2022 - present,"_ ___________ ____________ ______ ___ Eawag ___ Dübendorf _�_________ _�_ 36 ___________ ______ _______________ _�_ �_______ __________ __ ____ _______. __ ______ _____ _____ 1,5 m __ ___ ____ ____ ___ ___ �_____ (0,5 m) ___ ____________ ___ 15 m3 ______ _____. __ ______ _�_____ __ _�_____________ ___ __ _�_____________ �_____ ______ ___ �_________.",___,_________ _�__________," +Aquatron Laboratory: Phytoplankton cultivation - 45.7422222,-85.50944444444444 - -",_________ _�__________,_________ _�__________,___ _�______ ________,"on site -","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx -","photo credits: CMU Communications -",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}",,, -test 11,[TEST CASE] Abstract: no information at all,University of Helsinki,Finland,Europe,"University of Helsinki + +","['http://mesocosm.org/wp-content/uploads/2017/05/aquatronS.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Aquatron-empty_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/halifax_pool_calltoaction.image_.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/featureslide.image_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron1_400.jpg']",,,,"['44.6356125', '-63.5944334']","{'coordinates': ['44.6356125', '-63.5944334']}",, +test 11,[TEST CASE] Abstract: data unavailable,University of Helsinki,Finland,Europe,"University of Helsinki P.O. Box 3 00014 University of Helsinki Finland @@ -487,8 +5344,8 @@ SYKE-MRC field mesocosm work at Tvärminne -","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",,, -test 12,[TEST CASE] Abstract: all information available,University of Helsinki,Finland,Europe,"University of Helsinki +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",, +test 12,[TEST CASE] Abstract: all data available,University of Helsinki,Finland,Europe,"University of Helsinki P.O. Box 3 00014 University of Helsinki Finland @@ -528,7 +5385,7 @@ SYKE-MRC field mesocosm work at Tvärminne -","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",,, +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",, test 13,"[TEST CASE] Abstract: only ""Description of Facility"" data available",University of Helsinki,Finland,Europe,"University of Helsinki P.O. Box 3 00014 University of Helsinki @@ -561,7 +5418,7 @@ SYKE-MRC field mesocosm work at Tvärminne -","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",,, +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",, test 14,"[TEST CASE] Abstract: only ""Equipment"" data available",University of Helsinki,Finland,Europe,"University of Helsinki P.O. Box 3 00014 University of Helsinki @@ -569,7 +5426,7 @@ test 14,"[TEST CASE] Abstract: only ""Equipment"" data available",University of ","Director: Marko Reinikainen Research Coordinator: Joanna Norkko Please login or request access to view contact information.,Please login or request access to view contact information. -",2026 - present,,,," +",2025 - present,,,," @@ -593,7 +5450,7 @@ SYKE-MRC field mesocosm work at Tvärminne -","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",,, +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",, test 15,"[TEST CASE] Abstract: only ""Controlled Parameters"" data available",University of Helsinki,Finland,Europe,"University of Helsinki P.O. Box 3 00014 University of Helsinki @@ -601,7 +5458,7 @@ test 15,"[TEST CASE] Abstract: only ""Controlled Parameters"" data available",Un ","Director: Marko Reinikainen Research Coordinator: Joanna Norkko Please login or request access to view contact information.,Please login or request access to view contact information. -",2027 - present,,"Temperature, light, pH, pCO2, nutrient levels, community composition, turbidity +",2025 - present,,"Temperature, light, pH, pCO2, nutrient levels, community composition, turbidity ",," @@ -625,7 +5482,7 @@ SYKE-MRC field mesocosm work at Tvärminne -","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",,, +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",, test 16,"[TEST CASE] Abstract: only ""Primary interests"" data available",University of Helsinki,Finland,Europe,"University of Helsinki P.O. Box 3 00014 University of Helsinki @@ -633,7 +5490,7 @@ test 16,"[TEST CASE] Abstract: only ""Primary interests"" data available",Univer ","Director: Marko Reinikainen Research Coordinator: Joanna Norkko Please login or request access to view contact information.,Please login or request access to view contact information. -",2027 - present,,,," +",2025 - present,,,," @@ -661,7 +5518,7 @@ SYKE-MRC field mesocosm work at Tvärminne -","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",,, +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",, test 17,"[TEST CASE] Abstract: only ""Research topics"" data available",University of Helsinki,Finland,Europe,"University of Helsinki P.O. Box 3 00014 University of Helsinki @@ -669,7 +5526,7 @@ test 17,"[TEST CASE] Abstract: only ""Research topics"" data available",Universi ","Director: Marko Reinikainen Research Coordinator: Joanna Norkko Please login or request access to view contact information.,Please login or request access to view contact information. -",2027 - present,,,"Environmental fate of pollutants (e.g. sorption transient storage and longitudinal dispersion) +",2025 - present,,,"Environmental fate of pollutants (e.g. sorption transient storage and longitudinal dispersion) Assessment of adverse effects of pollutants on macroinvertebrates following pulse exposures Evaluation and establishment of aquatic-terrestrial model ecosystems to assess aquatic insect emergence-related pollutant transfer or effect translation from aquatic to adjacent terrestrial systems "," @@ -695,4 +5552,116 @@ SYKE-MRC field mesocosm work at Tvärminne -","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",,, \ No newline at end of file +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",, +test 18,[TEST CASE] Keywords: data unavailable,McGill University,Canada,North America,"McGill Department of Biology +Stewart Biology Bldg +1205 Dr Penfield Ave +Montreal, QC H3A 1B1 +Canada +","Professor Andrew Gonzalez +Please login or request access to view contact information. +",2016 - present,"LEAP is based at McGill University’s Gault Reserve It is a facility designed for well-replicated experiments addressing the evolution and ecology of aquatic ecosystems exposed to environmental stressors. It is an array of 96 mesocosm tanks, each containing ~1000 liters of water.  Water and organisms (excluding fish) are piped to LEAP directly from a Lake Hertel over a kilometer away. Lake Hertel is a protected lake not exposed to contaminants. The plumbing at LEAP allows for a semi-continuous flow of lake water and organisms into and out of the tanks throughout the season. These communities are natural analogues of the freshwater ponds and lakes so common in Canadian landscapes. The onsite lab allows us to rapidly process samples (see images below). An outflow reservoir can hold the outflow from all mesocosms so that decontamination can be done, if needed. +","Contaminants such as pH and herbicide concentrations. +"," +Freshwater ecology and evolution +Limnology +Ecosystem processes + +"," + + + + + 45.5368, -73.1578 + +","Experimental research addressing how complex aquatic communities respond to environmental stressors.  +"," +Experimental evolution +Ecology +Metagenomics  + +"," +Fluoroprobe +Microscopes +Drone + +","Available +https://gault.mcgill.ca/en/meeting-and-lodging/detail/lodging-at-the-reserve/ +","http://gonzalezlab.weebly.com/leap.html +"," + + + +Panoramic view of the LEAP facility embedded in forest of the Gault reserve, with the inflow and outflow reservoirs visible. +Photo credit: Andrew Gonzalez + + + + +Panoramic view of the LEAP-lab, in and outflow reservoir and mesocosm platform +Photo credit: Andrew Gonzalez + + + + +Depth and multiparameter probe (YSI) physico-chemical measurements.  Photo credit: Vincent Fugère +  + + + + +","['http://mesocosm.org/wp-content/uploads/2019/04/3-1024x769.png', 'http://mesocosm.org/wp-content/uploads/2019/04/2-1024x368.png', 'http://mesocosm.org/wp-content/uploads/2019/04/1.png']",,,,"['45.5368', ' -73.1578']","{'coordinates': ['45.5368', '-73.1578']}",, +test 19,[TEST CASE] Keywords: data available,McGill University,Canada,North America,"McGill Department of Biology +Stewart Biology Bldg +1205 Dr Penfield Ave +Montreal, QC H3A 1B1 +Canada +","Professor Andrew Gonzalez +Please login or request access to view contact information. +",2016 - present,"LEAP is based at McGill University’s Gault Reserve It is a facility designed for well-replicated experiments addressing the evolution and ecology of aquatic ecosystems exposed to environmental stressors. It is an array of 96 mesocosm tanks, each containing ~1000 liters of water.  Water and organisms (excluding fish) are piped to LEAP directly from a Lake Hertel over a kilometer away. Lake Hertel is a protected lake not exposed to contaminants. The plumbing at LEAP allows for a semi-continuous flow of lake water and organisms into and out of the tanks throughout the season. These communities are natural analogues of the freshwater ponds and lakes so common in Canadian landscapes. The onsite lab allows us to rapidly process samples (see images below). An outflow reservoir can hold the outflow from all mesocosms so that decontamination can be done, if needed. +","Contaminants such as pH and herbicide concentrations. +"," +Freshwater ecology and evolution +Limnology +Ecosystem processes + +"," + + + + + 45.5368, -73.1578 + +","Experimental research addressing how complex aquatic communities respond to environmental stressors.  +","Aquatic plant +"," +Fluoroprobe +Microscopes +Drone + +","Available +https://gault.mcgill.ca/en/meeting-and-lodging/detail/lodging-at-the-reserve/ +","http://gonzalezlab.weebly.com/leap.html +"," + + + +Panoramic view of the LEAP facility embedded in forest of the Gault reserve, with the inflow and outflow reservoirs visible. +Photo credit: Andrew Gonzalez + + + + +Panoramic view of the LEAP-lab, in and outflow reservoir and mesocosm platform +Photo credit: Andrew Gonzalez + + + + +Depth and multiparameter probe (YSI) physico-chemical measurements.  Photo credit: Vincent Fugère +  + + + + +","['http://mesocosm.org/wp-content/uploads/2019/04/3-1024x769.png', 'http://mesocosm.org/wp-content/uploads/2019/04/2-1024x368.png', 'http://mesocosm.org/wp-content/uploads/2019/04/1.png']",,,,"['45.5368', ' -73.1578']","{'coordinates': ['45.5368', '-73.1578']}",, \ No newline at end of file diff --git a/server/workers/common/common/aquanavi/mesocosm_data_with_test_cases.csv b/server/workers/common/common/aquanavi/mesocosm_data_with_test_cases.csv new file mode 100644 index 000000000..5cdcfe3d9 --- /dev/null +++ b/server/workers/common/common/aquanavi/mesocosm_data_with_test_cases.csv @@ -0,0 +1,698 @@ +url,Name,Legal name of organisation,Country,Continent,Organisation address,Primary contact information (PI),Years of Mesocosm Experiments,Description of Facility,Controlled Parameters,Research Topics,Facility location(s),Primary interests,Specialist areas,Equipment,Lodging,Source of Information,Photos of experiments/installations,Photos of experiments/installations images,Equipment images,Lodging images,Manipulations,Facility location(s) split,location_facilities,,, +https://mesocosm.org/mesocosm/sites-aquanet-skogaryd-research-station/,SITES AquaNet – Skogaryd Research Station,SITES and Göteborg University,Sweden,Europe,"Göteborg University +Inst. for Geosciences +Guldhedsgatan 5a +40530 Göteborg +Sweden +  +","Leif Klemedtsson +Please login or request access to view contact information. +",2017," +Open access to national and international researchers. +Outdoor, freshwater, deployed in an adaptable jetfloat, placed in the lake Erssjön within Skogaryd research Catchment. +PE-film enclosures or 20 hardshell PE enclosures (ø = 0.9 m, depth = 1.5 m, volume = 700 l) + +",,"Advanced general understanding in ecology by using modularized experiments across SITES-AquaNet stations (Sweden) or potential collaborators (Sweden, Europe and other continents). Topics: biodiversity-functioning-stability relationships, community ecology, ecological stoichiometry, food web interactions, benthic-pelagic dynamics, biochemistry (carbon cycling), cyanobacterial blooms and global change research. Possibility to combine mechanistic experiments with lake monitoring data from Lake Erssjön (e.g., phytoplankton, zooplankton, nutrients and on-site climate data, incl. temperature profile measurements). +"," + + + + + 58.3712, 12.1613 + +",,,"Apogee SQ-500 (PAR), CTG Trilux fluorometer (chlorophyll-a, phycocyanin and turbidity) and Aanderaa 4531 optode (O2 and temperature) sensors fulltime deployed in each enclosure, deployed with a Campbell CR1000 datalogger and an AM16/32B multiplexer (https://www.campbellsci.com). The sensor and logger are connected to Skogaryd fiber-optic network for maintenance and data retrieval. Surveillance camera mounted for remote monitoring of the site. +Hach with DO and pH, an AP-2000 AquaRead Multiprobe (http://www.aquaread.com/portofolio/ap-2000/) equipped with a chlorophyll a sensor, and an Apogee MQ-500 (PAR) sensor with handheld meters. +Laboratory container for filtering and extraction of samples, cold storage and freezers are available at the research station. Connection to laboratories for analysis at the Swedish University of Agricultural Sc.; the Geochemical laboratory (http://www.slu.se/en/departments/aquatic-sciences-assessment/laboratories/geochemical-laboratory/), and at the Uppsala University; the Erken Laboratory (http://www.ieg.uu.se/erken-laboratory). +","Lodging capability in two houses for 8 persons with a smaller conference room in the station area (see skogarydwebmap.gu.se). A conference hostel located nearby can take 25 persons +","SITES (AquaNet, Water and Spectral projects) (http://www.fieldsites.se) +"," + + + +Photo credit: Leif Klemedtsson + + + + +Photo credit: Leif Klemedtsson + + + + +  +","['http://mesocosm.org/wp-content/uploads/2018/05/Skogaryd_2-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Skogaryd_1-1024x683.jpg']",,,,"['58.3712', ' 12.1613']","{'coordinates': ['58.3712', '12.1613']}",,, +https://mesocosm.org/mesocosm/university-koblenz-landau/,Landau Stream Mesocosm Facility (LSMF),University Koblenz-Landau,Germany,Europe,"University Koblenz-Landau + Fortstraße 7 + 76829 Landau +","Ralf Schulz + Matthias Wieczorek +Please login or request access to view contact information. +",2008 - present,"The stream mesocosm facility at the Landau Campus (SW Germany) consists of 16 independent high-density concrete stream channels (each channel: 45 m length, 0.5 m depth; 0.4 m width). The channels can be run in a flow-through or recirculating mode with discharges up to about 3 L/s representing flow conditions and hydraulic residence times as typically represented by scenarios used e.g. for the regulatory assessment of chemicals in Europe. +","Discharge (L/s) +Flow (flow-through or/and recirculating) +Taxon and coverage of aquatic macrophytes +Sediment composition +Shading +Exposure scenario (peak-, hour- and day-scale) +","Environmental fate of pollutants (e.g. sorption transient storage and longitudinal dispersion) +Assessment of adverse effects of pollutants on macroinvertebrates following pulse exposures +Evaluation and establishment of aquatic-terrestrial model ecosystems to assess aquatic insect emergence-related pollutant transfer or effect translation from aquatic to adjacent terrestrial systems +"," + + + + + 49.20269,8.106179999999995 + +",,,"Sediment of various compositions +Aquatic macrophytes (e.g. Elodea nuttallii, E. canadensis, Myriophyllum spicatum) +","Possible upon negotiation +","References: + Elsaesser, D., Stang, C., Bakanov, N., Schulz, R., 2013. The Landau Stream Mesocosm Facility: pesticide mitigation in vegetated flow-through streams. Bull. Environ. Contam. Toxicol. 90, 640–5. doi:10.1007/s00128-013-0968-9 + Stang, C., Elsaesser, D., Bundschuh, M., Ternes, T. a., Schulz, R., 2013. Mitigation of Biocide and Fungicide Concentrations in Flow-Through Vegetated Stream Mesocosms. J. Environ. Qual. 42, 1889. doi:10.2134/jeq2013.05.0186 + Stang, C., Wieczorek, M.V., Noss, C., Lorke, A., Scherr, F., Goerlitz, G., Schulz, R., 2014. Role of submerged vegetation in the retention processes of three plant protection products in flow-through stream mesocosms. Chemosphere 107, 13–22. doi:10.1016/j.chemosphere.2014.02.055 + Wieczorek, M. V., Kötter, D., Gergs, R., Schulz, R., 2015. Using stable isotope analysis in stream mesocosms to study potential effects of environmental chemicals on aquatic-terrestrial subsidies. Environ. Sci. Pollut. Res. 22, 12892–12901. doi:10.1007/s11356-015-4071-0 + Wieczorek, M. V., Bakanov, N., Stang, C., Bilancia, D., Lagadic, L., Bruns, E., Schulz, R., 2016. Reference scenarios for exposure to plant protection products and invertebrate communities in stream mesocosms. Sci. Total Environ. 545-546, 308-319. doi: 10.1016/j.scitotenv.2015.12.048 +"," + + + + +Stream mesocosm facility at the Landau Campus + + + + + +Stream mesocosm facility at the Landau Campus + + + + +","['http://mesocosm.org/wp-content/uploads/2017/05/Stream-Mesocosms-Landau_400px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Fliessrinnenanlage_400.jpg']",,,,"['49.20269', '8.106179999999995']","{'coordinates': ['49.20269', '8.106179999999995']}",,, +https://mesocosm.org/mesocosm/sites-aquanet-erken-laboratory/,SITES AquaNet-Erken Laboratory,Uppsala University,Sweden,Europe,"Uppsala University: +P.O. Box 256 +SE-751 05 Uppsala +Sweden +  +Erken Laboratory: +Norra Malmavägen +761 73 Norrtälje +Sweden +","Silke Langenheder: +Please login or request access to view contact information. +",2017 - present," +Open access to national and international researchers. +Outdoor, freshwater, lake deployed in an adaptable jetfloat. +PE-film enclosures or 20 hard-shell PE enclosures (ø = 0.9m, depth = 1.5m, volume = 700L). +In addition, there is access to another set of 20 hard-shell PE enclosures (ø = 1m, depth = 2 m, volume = 1200L). + +",,"Advance general understanding in ecology by using modularized experiments across SITES-AquaNet stations (Sweden) or potential collaborators (Sweden, Europe and other continents). Topics: biodiversity-functioning-stability relationships, community ecology, ecological stoichiometry, food web interactions, benthic-pelagic dynamics, biochemistry (carbon cycling), cyanobacterial blooms and global change research. Possibility to combine mechanistic experiments with historical (decadal) lake monitoring data from Lake Erken (e.g., phytoplankton, zooplankton, fish, nutrients and high frequency temperature measurements). +"," + + + + + 59.8354205, 18.6327766 + +",,,"Apogee SQ-500 (PAR), CTG Trilux fluorometer (chlorophyll-a, phycocyanin and turbidity) and Aanderaa 4531 optode (O2 and temperature) sensors fulltime deployed in each enclosure. CR1000 dataloggers and AM16/32B multiplexers. Possibility to develop Internet interface for collected data. One EXO2 Multiprobe (https://www.ysi.com/EXO2) one AP-2000 AquaRead Multiprobe (http://www.aquaread.com/portofolio/ap-2000/) and one Apogee MQ-500 (PAR) with handheld meters. Laboratory analytical services available in site (http://www.ieg.uu.se/erken-laboratory/analytical-services/) or at Uppsala University (http://www.ieg.uu.se/limnology/) +","Capacity in site (Erken Laboratory) up to 60 people with fridges, freezers and cooking facilities (http://www.ieg.uu.se/erken-laboratory/.) +","SITES AquaNet, Water and Spectral: http://www.fieldsites.se +NETLAKE: www.netlake.org +GLEON: www.gleon.org +"," + + + +Photo credit: Sophie Wertek + + + + +Photo credit: Erik Sahlee + + + + +","['http://mesocosm.org/wp-content/uploads/2018/05/Erken_2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Erken_1-1024x705.jpg']",,,,"['59.8354205', ' 18.6327766']","{'coordinates': ['59.8354205', '18.6327766']}",,, +https://mesocosm.org/mesocosm/resources-garden-of-aquatic-plant/,Resources garden of aquatic plant,"Wuhan Botanical Garden, Chinese Academy of Sciences",China,Asia,"Lumo Road #1, Wuhan, China +","(+86)13297957139 +Please login or request access to view contact information. +",2019-2022,"Total area of 450 m2, and with the concrete pools of 1 * 1 m2 and 2 * 2 m2 at 1 m and 1.5 m depths.  Electricity is powered, and two types of water supply (from nearby Donghu Lake or tap water) +","Water depth at the gradient of 25 cm to 150 cm, and the temperature could be also controlled by the heat devices and control panel. +","functional trait; global warming +"," + + + + + 30.54694,114.41972 + +","1. the effects of warming or extreme water level changes on submerged macrophytes +2. the trade-offs between functional traits of submerged macrophytes +3. the interaction between submerged macrophytes and phytoplankton, zooplankton and fish +","Aquatic plant +","YSI multi-parameter probe, PAM monitor, Li-1400 +","Wuhan +","http://english.wbg.cas.cn/ +"," + + + +The green house and the heating control system + + + + +Outdoor tanks with different size and area + + + + +Tanks with different macrophytes and water depth + + + + +","['http://mesocosm.org/wp-content/uploads/2019/03/The-green-house-and-the-heating-control-system-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Outdoor-tanks-with-different-size-and-area-300x225.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Tanks-with-different-macrophytes-and-water-depth-300x225.jpeg']",,,,"['30.54694', '114.41972']","{'coordinates': ['30.54694', '114.41972']}",,, +https://mesocosm.org/mesocosm/large-experimental-array-of-ponds-leap/,Large Experimental Array of Ponds (LEAP),McGill University,Canada,North America,"McGill Department of Biology +Stewart Biology Bldg +1205 Dr Penfield Ave +Montreal, QC H3A 1B1 +Canada +","Professor Andrew Gonzalez +Please login or request access to view contact information. +",2016 - present,"LEAP is based at McGill University’s Gault Reserve It is a facility designed for well-replicated experiments addressing the evolution and ecology of aquatic ecosystems exposed to environmental stressors. It is an array of 96 mesocosm tanks, each containing ~1000 liters of water.  Water and organisms (excluding fish) are piped to LEAP directly from a Lake Hertel over a kilometer away. Lake Hertel is a protected lake not exposed to contaminants. The plumbing at LEAP allows for a semi-continuous flow of lake water and organisms into and out of the tanks throughout the season. These communities are natural analogues of the freshwater ponds and lakes so common in Canadian landscapes. The onsite lab allows us to rapidly process samples (see images below). An outflow reservoir can hold the outflow from all mesocosms so that decontamination can be done, if needed. +","Contaminants such as pH and herbicide concentrations. +"," +Freshwater ecology and evolution +Limnology +Ecosystem processes + +"," + + + + + 45.5368, -73.1578 + +","Experimental research addressing how complex aquatic communities respond to environmental stressors.  +"," +Experimental evolution +Ecology +Metagenomics  + +"," +Fluoroprobe +Microscopes +Drone + +","Available +https://gault.mcgill.ca/en/meeting-and-lodging/detail/lodging-at-the-reserve/ +","http://gonzalezlab.weebly.com/leap.html +"," + + + +Panoramic view of the LEAP facility embedded in forest of the Gault reserve, with the inflow and outflow reservoirs visible. +Photo credit: Andrew Gonzalez + + + + +Panoramic view of the LEAP-lab, in and outflow reservoir and mesocosm platform +Photo credit: Andrew Gonzalez + + + + +Depth and multiparameter probe (YSI) physico-chemical measurements.  Photo credit: Vincent Fugère +  + + + + +","['http://mesocosm.org/wp-content/uploads/2019/04/3-1024x769.png', 'http://mesocosm.org/wp-content/uploads/2019/04/2-1024x368.png', 'http://mesocosm.org/wp-content/uploads/2019/04/1.png']",,,,"['45.5368', ' -73.1578']","{'coordinates': ['45.5368', '-73.1578']}",,, +https://mesocosm.org/mesocosm/cmu-biological-station-mesocosm-facility/,[TEST CASE] Identifier: same with some other mesocosm; Location: different from some other mesocosm,"Eawag, Swiss Federal Institute of Aquatic Science and Technology",Switzerland,Europe,"Eawag, Überlandstrasse 133, 8600 Dübendorf, Switzerland +","Christoph Vorburger +Head of Experimental Ponds Committee +Please login or request access to view contact information. +",2016 – present,"The Experimental Ponds Facility at Eawag in Dübendorf consists of 36 independent ponds made of glass fiber reinforced plastic. The ponds are 1.5 m deep with a shallow end to one side (0.5 m), and they hold up to 15 m3 of fresh water. The ponds can be drained and reset completely between experiments. +","Depending on ongoing experiments: +1. Nutrient loading (phosphorus) +2. Presence/absence of macrophytes +3. Presence/absence of filter feeders (mussels) +4. Ecotypes of added fish +","Ecosystem resilience +Eco-evolutionary dynamics +Ecosystem effects of environmental stressors +Ecoosystem effects of evaporation control +"," + + + + + 47.40515,8.60855 + +",,,"Indoor laboratories for sample processing +Sampling bridges for easy access to water column +Sampling equipment for phyto- and zooplankton +Exo2 Multiparameter Sonds for automated measurement of water quality parameters +","Hotels and Eawag guest house nearby +","https://www.eawag.ch/de/ueberuns/arbeiten-an-der-eawag/forschungsumfeld/versuchsteichanlage/ +"," + + + +Image 1: Eawag’s Experimental Pond Facility in Dübendorf, Switzerland. Picture taken in summer 2016, shortly after the construction of the facility. Photo credit: Christoph Vorburger + + + + +Image 2: Schematic cross-section of an experimental pond. Image credit: Eawag + + + + +Image 3: Scientists taking samples at Eawag’s Experimental Pond Facility in Dübendorf, Switzerland. Photo credit: Eawag + + + + +","['http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-1-300x186.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-2-300x156.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-3-300x174.jpg']",,,,"['47.40515', '8.60855']","{'coordinates': ['47.40515', '8.60855']}",,, +https://mesocosm.org/mesocosm/cmu-biological-station-mesocosm-facility/,[TEST CASE] Identifier: same with some other mesocosm; Location: same with some other mesocosm,"CMU Biological Station, Central Michigan University",USA,North America,"P.O. Box 206, +Beaver Island, +MI 49782 +USA +","Don Uzarski +Please login or request access to view contact information. +",2012 - present," +12 fibreglass tanks each 250 gallons +including metal halide +timer-controlled lights +housed on Lake Michigan with access to epilimnetic and metalimnetic water + +"," +Light +Temperature + +"," +Predator-prey interactions +microplastic impacts +sediment contaminants +macrophyte-phytoplankton interactions +fish behavior +nutrient impacts + +"," + + + + + 45.7422222,-85.50944444444444 + +"," +Invasive species +eutrophication +climate change + +","Laurentian Great Lakes +","YSI multiprobes +","on site +","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx +","photo credits: CMU Communications +",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}",,, +test 1,[TEST CASE] Aquatron Laboratory,Dalhousie University Life Sciences Centre,,North-America,"Dalhousie University Life Sciences Centre + 1355 Oxford Street + PO BOX 15000 + Halifax, Nova Scotia + Canada, B3H 4R2 +","John Batt +Please login or request access to view contact information. +",,,"temperature, stratification, light, etc. +","Animal behaviour, ballast water, flood containment, invasive species +"," + + + + + 44.6356125,-63.5944334 + +",,,"These world-class facilities are backed by our mechanical system, which can provide high quality, temperature controlled seawater and freshwater year round, as well as a professional team of both biologists and mechanical operators who are available to run the systems and help researchers. 16 wet labs. +",,"http://www.dal.ca/dept/aquatron.html +http://www.dal.ca/dept/aquatron/facilities/tower_tank.html +http://www.dal.ca/dept/aquatron/facilities/pool_tank.html +"," + + + + +Aquatron Laboratory in Halifax, Nova-Scotia, CA + + + + + + + + + + + +Aquatron laboratory: Pool tank + + + + + +Aquatron Laboratory: Tower tank sysem + + + + + +Aquatron Laboratory: Phytoplankton cultivation + + + + +","['http://mesocosm.org/wp-content/uploads/2017/05/aquatronS.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Aquatron-empty_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/halifax_pool_calltoaction.image_.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/featureslide.image_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron1_400.jpg']",,,,"['44.6356125', '-63.5944334']","{'coordinates': ['44.6356125', '-63.5944334']}",,, +test 2,[TEST CASE] IMDEA Water Institute,IMDEA Water Foundation,Spain,Europe,"IMDEA Water Institute +Avenida Punto Com 2 +PO Box 28805, Alcala de Henares +Madrid (Spain) +","Andreu Rico:  andreu.rico@imdea.org +Marco Vighi:  marco.vighi@imdea.org +",,,,"Environmental fate of chemicals and calculation of degradation rates +Assessment of the adverse effects of chemicals on several biological endpoints and derivation of safe environmental concentrations +Evaluation of the interaction between multiple stressors (chemical and non-chemical) on aquatic ecosystems +"," + + + + + 40.5133474, -3.3386556000000382 + +","We are mainly engaged on academic research projects but also open for collaboration with the regulatory and industry sectors. Please do not hesitate to contact us. +",,,"Can be arranged upon request +","http://water.imdea.org/ +","  + + + + +Photot: Michelle Jansen +  + + +Photo: Andreu Rico +  + + + + +Photo: Andreu Rico + + +Photo: Andreu Rico + + + + +  +","['http://mesocosm.org/wp-content/uploads/2018/04/IMG_2170-300x181.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/20160519_121359-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/20170512_154035_resized-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/IMG-20170512-WA0010-300x169.jpg']",,,,"['40.5133474', ' -3.3386556000000382']","{'coordinates': ['40.5133474', '-3.3386556000000382']}",,, +test 8,[TEST CASE] Non-latin characters (Chinese simplified),,China,Asia,____,____,2020 - present,___________,__,"______________ +_______"," + + + + + 45.7422222,-85.50944444444444 + +","______________ +_______","______________ +_______",____,"on site +","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx +","photo credits: CMU Communications +",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}",,, +test 9,[TEST CASE] Non-latin characters (Arabic),__ ____ ______,___,_______,__ ____ ______,__ ____ ______,2021 - present,_____ _____ _____ _________ __ Eawag __ Dübendorf __ 36 ____ ______ ______ __ _________ ______ ________ ________. ____ ___ _____ 1.5 ___ __ ___ ___ __ ____ ____ (0.5 ___)_ _______ __ ___ ___ 15 _____ ______ __ ______ ______. ____ _____ _____ ______ _____ _______ ___ _______.,____ _______,_______ ________ _______," + + + + + 45.7422222,-85.50944444444444 + +",__ ____ ______,__ ____ ______,__ ____ ______,"on site +","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx +","photo credits: CMU Communications +",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}",,, +test 10 ,[TEST CASE] Non-latin characters (Greek),___ _�______ ________,Greece,Europe,___ _�______ ________,___ _�______ ________,2022 - present,"_ ___________ ____________ ______ ___ Eawag ___ Dübendorf _�_________ _�_ 36 ___________ ______ _______________ _�_ �_______ __________ __ ____ _______. __ ______ _____ _____ 1,5 m __ ___ ____ ____ ___ ___ �_____ (0,5 m) ___ ____________ ___ 15 m3 ______ _____. __ ______ _�_____ __ _�_____________ ___ __ _�_____________ �_____ ______ ___ �_________.",___,_________ _�__________," + + + + + 45.7422222,-85.50944444444444 + +",_________ _�__________,_________ _�__________,___ _�______ ________,"on site +","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx +","photo credits: CMU Communications +",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}",,, +test 11,[TEST CASE] Abstract: no information at all,University of Helsinki,Finland,Europe,"University of Helsinki + P.O. Box 3 + 00014 University of Helsinki + Finland +","Director: Marko Reinikainen + Research Coordinator: Joanna Norkko +Please login or request access to view contact information.,Please login or request access to view contact information. +",2023 - present,,,," + + + + + 59.8431619,23.2440297 + +",,,,"Dormitories with ca 100 beds, full board, self-service kitchens, sea-side sauna +","http://www.finmari-infrastructure.fi/field-stations/tvarminne-uhel/ +"," + + + +Pristine nature reserve for experimental set-ups + + + + +SYKE-MRC field mesocosm work at Tvärminne + + + + +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",,, +test 12,[TEST CASE] Abstract: all information available,University of Helsinki,Finland,Europe,"University of Helsinki + P.O. Box 3 + 00014 University of Helsinki + Finland +","Director: Marko Reinikainen + Research Coordinator: Joanna Norkko +Please login or request access to view contact information.,Please login or request access to view contact information. +",2024 - present,"pelagic – marine – outdoor + A large nature reserve surrounding TZS is dedicated to research, providing access to a pristine environment for field mesocosms. Research vessels and technical services support sampling and maintenance; a hovercraft allows winter-studies. Aquarium facilities with natural or artificial light are available for flow-through experiments at up to 100 000 m3 daily water capacity. A marine laboratory provides analytical services. +","Temperature, light, pH, pCO2, nutrient levels, community composition, turbidity +","Biodiversity, stoichiometry, benthic ecology, plankton ecology, seagrass ecology, ice studies, reproductive evolution in fishes +"," + + + + + 59.8431619,23.2440297 + +"," +Invasive species +eutrophication +climate change + +",,"Wet labs, outdoor aquarium facility, climatic chambers, bio-optical instrumentation (spectrophotometry, spectrofluorometry), masspectrometry, carbon analyzers, microscopes with digital imaging, isotope lab, chemistry lab, CTD, meters for light, turbidity and oxygen, field sampling equipment, research vessels, hovercraft +","Dormitories with ca 100 beds, full board, self-service kitchens, sea-side sauna +","http://www.finmari-infrastructure.fi/field-stations/tvarminne-uhel/ +"," + + + +Pristine nature reserve for experimental set-ups + + + + +SYKE-MRC field mesocosm work at Tvärminne + + + + +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",,, +test 13,"[TEST CASE] Abstract: only ""Description of Facility"" data available",University of Helsinki,Finland,Europe,"University of Helsinki + P.O. Box 3 + 00014 University of Helsinki + Finland +","Director: Marko Reinikainen + Research Coordinator: Joanna Norkko +Please login or request access to view contact information.,Please login or request access to view contact information. +",2025 - present,"pelagic – marine – outdoor + A large nature reserve surrounding TZS is dedicated to research, providing access to a pristine environment for field mesocosms. Research vessels and technical services support sampling and maintenance; a hovercraft allows winter-studies. Aquarium facilities with natural or artificial light are available for flow-through experiments at up to 100 000 m3 daily water capacity. A marine laboratory provides analytical services. +",,," + + + + + 59.8431619,23.2440297 + +",,,,"Dormitories with ca 100 beds, full board, self-service kitchens, sea-side sauna +","http://www.finmari-infrastructure.fi/field-stations/tvarminne-uhel/ +"," + + + +Pristine nature reserve for experimental set-ups + + + + +SYKE-MRC field mesocosm work at Tvärminne + + + + +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",,, +test 14,"[TEST CASE] Abstract: only ""Equipment"" data available",University of Helsinki,Finland,Europe,"University of Helsinki + P.O. Box 3 + 00014 University of Helsinki + Finland +","Director: Marko Reinikainen + Research Coordinator: Joanna Norkko +Please login or request access to view contact information.,Please login or request access to view contact information. +",2026 - present,,,," + + + + + 59.8431619,23.2440297 + +",,,"Wet labs, outdoor aquarium facility, climatic chambers, bio-optical instrumentation (spectrophotometry, spectrofluorometry), masspectrometry, carbon analyzers, microscopes with digital imaging, isotope lab, chemistry lab, CTD, meters for light, turbidity and oxygen, field sampling equipment, research vessels, hovercraft +","Dormitories with ca 100 beds, full board, self-service kitchens, sea-side sauna +","http://www.finmari-infrastructure.fi/field-stations/tvarminne-uhel/ +"," + + + +Pristine nature reserve for experimental set-ups + + + + +SYKE-MRC field mesocosm work at Tvärminne + + + + +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",,, +test 15,"[TEST CASE] Abstract: only ""Controlled Parameters"" data available",University of Helsinki,Finland,Europe,"University of Helsinki + P.O. Box 3 + 00014 University of Helsinki + Finland +","Director: Marko Reinikainen + Research Coordinator: Joanna Norkko +Please login or request access to view contact information.,Please login or request access to view contact information. +",2027 - present,,"Temperature, light, pH, pCO2, nutrient levels, community composition, turbidity +",," + + + + + 59.8431619,23.2440297 + +",,,,"Dormitories with ca 100 beds, full board, self-service kitchens, sea-side sauna +","http://www.finmari-infrastructure.fi/field-stations/tvarminne-uhel/ +"," + + + +Pristine nature reserve for experimental set-ups + + + + +SYKE-MRC field mesocosm work at Tvärminne + + + + +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",,, +test 16,"[TEST CASE] Abstract: only ""Primary interests"" data available",University of Helsinki,Finland,Europe,"University of Helsinki + P.O. Box 3 + 00014 University of Helsinki + Finland +","Director: Marko Reinikainen + Research Coordinator: Joanna Norkko +Please login or request access to view contact information.,Please login or request access to view contact information. +",2027 - present,,,," + + + + + 59.8431619,23.2440297 + +"," +Invasive species +eutrophication +climate change + +",,,"Dormitories with ca 100 beds, full board, self-service kitchens, sea-side sauna +","http://www.finmari-infrastructure.fi/field-stations/tvarminne-uhel/ +"," + + + +Pristine nature reserve for experimental set-ups + + + + +SYKE-MRC field mesocosm work at Tvärminne + + + + +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",,, +test 17,"[TEST CASE] Abstract: only ""Research topics"" data available",University of Helsinki,Finland,Europe,"University of Helsinki + P.O. Box 3 + 00014 University of Helsinki + Finland +","Director: Marko Reinikainen + Research Coordinator: Joanna Norkko +Please login or request access to view contact information.,Please login or request access to view contact information. +",2027 - present,,,"Environmental fate of pollutants (e.g. sorption transient storage and longitudinal dispersion) +Assessment of adverse effects of pollutants on macroinvertebrates following pulse exposures +Evaluation and establishment of aquatic-terrestrial model ecosystems to assess aquatic insect emergence-related pollutant transfer or effect translation from aquatic to adjacent terrestrial systems +"," + + + + + 59.8431619,23.2440297 + +",,,,"Dormitories with ca 100 beds, full board, self-service kitchens, sea-side sauna +","http://www.finmari-infrastructure.fi/field-stations/tvarminne-uhel/ +"," + + + +Pristine nature reserve for experimental set-ups + + + + +SYKE-MRC field mesocosm work at Tvärminne + + + + +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",,, \ No newline at end of file From 425d9324baf8c0f5edc7e2cb84b63e660dd6fb97 Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 13 Oct 2025 17:18:54 +0200 Subject: [PATCH 069/149] feat: document types for aquanavi --- vis/js/templates/listentry/StandardListEntry.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/vis/js/templates/listentry/StandardListEntry.tsx b/vis/js/templates/listentry/StandardListEntry.tsx index 8c26b12d0..6fc2aee79 100644 --- a/vis/js/templates/listentry/StandardListEntry.tsx +++ b/vis/js/templates/listentry/StandardListEntry.tsx @@ -125,12 +125,14 @@ const mapStateToProps = (state) => ({ isInStreamBacklink: !!state.selectedBubble, showDocTags: state.service === "base" || state.service === "orcid", showAllDocTypes: - (state.service === "base" || state.service === "orcid") && + (state.service === "base" || + state.service === "orcid" || + state.service === "aquanavi") && !!state.selectedPaper, service: state.service, }); export default connect( mapStateToProps, - mapDispatchToListEntriesProps + mapDispatchToListEntriesProps, )(StandardListEntry); From f987ee09fdc4dad89e363f507eb5f0af4490ab1e Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 13 Oct 2025 17:25:12 +0200 Subject: [PATCH 070/149] bugfix: remove some data from the csv --- .../aquanavi/mesocosm_data_cleaned_with_test_cases.csv | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/server/workers/common/common/aquanavi/mesocosm_data_cleaned_with_test_cases.csv b/server/workers/common/common/aquanavi/mesocosm_data_cleaned_with_test_cases.csv index 998021027..8f2e4904a 100644 --- a/server/workers/common/common/aquanavi/mesocosm_data_cleaned_with_test_cases.csv +++ b/server/workers/common/common/aquanavi/mesocosm_data_cleaned_with_test_cases.csv @@ -5575,12 +5575,7 @@ Ecosystem processes 45.5368, -73.1578 ","Experimental research addressing how complex aquatic communities respond to environmental stressors.  -"," -Experimental evolution -Ecology -Metagenomics  - -"," +",," Fluoroprobe Microscopes Drone From 574466cfbacb07afb75db82e8cbfced928bba7e1 Mon Sep 17 00:00:00 2001 From: andrei Date: Tue, 14 Oct 2025 13:01:21 +0200 Subject: [PATCH 071/149] feat: test cases with non latin characters --- .../mesocosm_data_cleaned_with_test_cases.csv | 224 +++++++++--------- 1 file changed, 114 insertions(+), 110 deletions(-) diff --git a/server/workers/common/common/aquanavi/mesocosm_data_cleaned_with_test_cases.csv b/server/workers/common/common/aquanavi/mesocosm_data_cleaned_with_test_cases.csv index 8f2e4904a..2d59e31ff 100644 --- a/server/workers/common/common/aquanavi/mesocosm_data_cleaned_with_test_cases.csv +++ b/server/workers/common/common/aquanavi/mesocosm_data_cleaned_with_test_cases.csv @@ -1,4 +1,4 @@ -url,Name,Legal name of organisation,Country,Continent,Organisation address,Primary contact information (PI),Years of Mesocosm Experiments,Description of Facility,Controlled Parameters,Research Topics,Facility location(s),Primary interests,Specialist areas,Equipment,Lodging,Source of Information,Photos of experiments/installations,Photos of experiments/installations images,Equipment images,Lodging images,Manipulations,Facility location(s) split,location_facilities,, +url,Name,Legal name of organisation,Country,Continent,Organisation address,Primary contact information (PI),Years of Mesocosm Experiments,Description of Facility,Controlled Parameters,Research Topics,Facility location(s),Primary interests,Specialist areas,Equipment,Lodging,Source of Information,Photos of experiments/installations,Photos of experiments/installations images,Equipment images,Lodging images,Manipulations,Facility location(s) split,location_facilities https://mesocosm.org/mesocosm/sites-aquanet-skogaryd-research-station/,SITES AquaNet – Skogaryd Research Station,SITES and Göteborg University,Sweden,Europe,"Göteborg University Inst. for Geosciences Guldhedsgatan 5a @@ -40,7 +40,7 @@ Photo credit: Leif Klemedtsson   -","['http://mesocosm.org/wp-content/uploads/2018/05/Skogaryd_2-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Skogaryd_1-1024x683.jpg']",,,,"['58.3712', ' 12.1613']","{'coordinates': ['58.3712', '12.1613']}",, +","['http://mesocosm.org/wp-content/uploads/2018/05/Skogaryd_2-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Skogaryd_1-1024x683.jpg']",,,,"['58.3712', ' 12.1613']","{'coordinates': ['58.3712', '12.1613']}" https://mesocosm.org/mesocosm/university-koblenz-landau/,Landau Stream Mesocosm Facility (LSMF),University Koblenz-Landau,Germany,Europe,"University Koblenz-Landau Fortstraße 7 76829 Landau @@ -89,7 +89,7 @@ Stream mesocosm facility at the Landau Campus -","['http://mesocosm.org/wp-content/uploads/2017/05/Stream-Mesocosms-Landau_400px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Fliessrinnenanlage_400.jpg']",,,,"['49.20269', '8.106179999999995']","{'coordinates': ['49.20269', '8.106179999999995']}",, +","['http://mesocosm.org/wp-content/uploads/2017/05/Stream-Mesocosms-Landau_400px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Fliessrinnenanlage_400.jpg']",,,,"['49.20269', '8.106179999999995']","{'coordinates': ['49.20269', '8.106179999999995']}" https://mesocosm.org/mesocosm/sites-aquanet-erken-laboratory/,SITES AquaNet-Erken Laboratory,Uppsala University,Sweden,Europe,"Uppsala University: P.O. Box 256 SE-751 05 Uppsala @@ -134,7 +134,7 @@ Photo credit: Erik Sahlee -","['http://mesocosm.org/wp-content/uploads/2018/05/Erken_2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Erken_1-1024x705.jpg']",,,,"['59.8354205', ' 18.6327766']","{'coordinates': ['59.8354205', '18.6327766']}",, +","['http://mesocosm.org/wp-content/uploads/2018/05/Erken_2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Erken_1-1024x705.jpg']",,,,"['59.8354205', ' 18.6327766']","{'coordinates': ['59.8354205', '18.6327766']}" https://mesocosm.org/mesocosm/resources-garden-of-aquatic-plant/,Resources garden of aquatic plant,"Wuhan Botanical Garden, Chinese Academy of Sciences",China,Asia,"Lumo Road #1, Wuhan, China ","(+86)13297957139 Please login or request access to view contact information. @@ -174,7 +174,7 @@ Tanks with different macrophytes and water depth -","['http://mesocosm.org/wp-content/uploads/2019/03/The-green-house-and-the-heating-control-system-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Outdoor-tanks-with-different-size-and-area-300x225.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Tanks-with-different-macrophytes-and-water-depth-300x225.jpeg']",,,,"['30.54694', '114.41972']","{'coordinates': ['30.54694', '114.41972']}",, +","['http://mesocosm.org/wp-content/uploads/2019/03/The-green-house-and-the-heating-control-system-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Outdoor-tanks-with-different-size-and-area-300x225.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Tanks-with-different-macrophytes-and-water-depth-300x225.jpeg']",,,,"['30.54694', '114.41972']","{'coordinates': ['30.54694', '114.41972']}" https://mesocosm.org/mesocosm/large-experimental-array-of-ponds-leap/,Large Experimental Array of Ponds (LEAP),McGill University,Canada,North America,"McGill Department of Biology Stewart Biology Bldg 1205 Dr Penfield Ave @@ -232,7 +232,7 @@ Depth and multiparameter probe (YSI) physico-chemical measurements.  Photo cred -","['http://mesocosm.org/wp-content/uploads/2019/04/3-1024x769.png', 'http://mesocosm.org/wp-content/uploads/2019/04/2-1024x368.png', 'http://mesocosm.org/wp-content/uploads/2019/04/1.png']",,,,"['45.5368', ' -73.1578']","{'coordinates': ['45.5368', '-73.1578']}",, +","['http://mesocosm.org/wp-content/uploads/2019/04/3-1024x769.png', 'http://mesocosm.org/wp-content/uploads/2019/04/2-1024x368.png', 'http://mesocosm.org/wp-content/uploads/2019/04/1.png']",,,,"['45.5368', ' -73.1578']","{'coordinates': ['45.5368', '-73.1578']}" https://mesocosm.org/mesocosm/tva%cc%88rminne-mesocosm-facility-tmf/,Tvärminne Mesocosm Facility (TMF),University of Helsinki,Finland,Europe,"University of Helsinki P.O. Box 3 00014 University of Helsinki @@ -268,7 +268,7 @@ SYKE-MRC field mesocosm work at Tvärminne -","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",, +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}" https://mesocosm.org/mesocosm/cretacosmos/,CRETACOSMOS,Hellenic Centre for Marine Research (HCMR),Greece,Europe,"Institute of Oceanography Ex American Base Gournes 71003 Heraklion, Crete @@ -311,7 +311,7 @@ Cretacosmos mesocosm facility (Photo: Vivi Pitta)   -","['http://mesocosm.org/wp-content/uploads/2017/02/Cretacosmos-facility-during-the-LightDynaMix-project-Photo-Stella-A-Berger-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Two-basins-of-the-Cretacosmos-mesocosm-facility-300x188.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Cretacosmos-mesocosm-facility-Photo-Vivi-Pitta-300x113.jpg']",,,,"['35.3387352', '25.14421260']","{'coordinates': ['35.3387352', '25.14421260']}",, +","['http://mesocosm.org/wp-content/uploads/2017/02/Cretacosmos-facility-during-the-LightDynaMix-project-Photo-Stella-A-Berger-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Two-basins-of-the-Cretacosmos-mesocosm-facility-300x188.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Cretacosmos-mesocosm-facility-Photo-Vivi-Pitta-300x113.jpg']",,,,"['35.3387352', '25.14421260']","{'coordinates': ['35.3387352', '25.14421260']}" https://mesocosm.org/mesocosm/eawag-experimental-ponds-facility/,Eawag Experimental Ponds Facility,"Eawag, Swiss Federal Institute of Aquatic Science and Technology",Switzerland,Europe,"Eawag, Überlandstrasse 133, 8600 Dübendorf, Switzerland ","Christoph Vorburger Head of Experimental Ponds Committee @@ -358,7 +358,7 @@ Image 3: Scientists taking samples at Eawag’s Experimental Pond Facility in D -","['http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-1-300x186.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-2-300x156.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-3-300x174.jpg']",,,,"['47.40515', '8.60855']","{'coordinates': ['47.40515', '8.60855']}",, +","['http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-1-300x186.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-2-300x156.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Eawag-Experimental-Ponds-Facility-3-300x174.jpg']",,,,"['47.40515', '8.60855']","{'coordinates': ['47.40515', '8.60855']}" https://mesocosm.org/mesocosm/lippenbroek-experimental-wetland/,Lippenbroek Experimental Wetland,University of Antwerp,Belgium,Europe,"University of Antwerp Dep. Biology Universiteitsplein 1 @@ -416,7 +416,7 @@ Lippenbroek Experimental Wetland -","['http://mesocosm.org/wp-content/uploads/2017/05/Lippenbroek_5.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lippenbroek_1_314px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lippenbroek_3_400px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lippenbroek_2_400px.jpg']",,,,"['51.09284', '4.157230']","{'coordinates': ['51.09284', '4.157230']}",, +","['http://mesocosm.org/wp-content/uploads/2017/05/Lippenbroek_5.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lippenbroek_1_314px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lippenbroek_3_400px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lippenbroek_2_400px.jpg']",,,,"['51.09284', '4.157230']","{'coordinates': ['51.09284', '4.157230']}" https://mesocosm.org/mesocosm/cmu-biological-station-mesocosm-facility/,CMU Biological Station mesocosm facility,"CMU Biological Station, Central Michigan University",USA,North America,"P.O. Box 206, Beaver Island, MI 49782 @@ -458,7 +458,7 @@ climate change ","on site ","https://www2.cmich.edu/colleges/se/cmubs/MesocosmFacility/Pages/default.aspx ","photo credits: CMU Communications -",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}",, +",['http://mesocosm.org/wp-content/uploads/2022/11/beaver-island-mesocosms-1024x770.jpg'],,,,"['45.7422222', '-85.50944444444444']","{'coordinates': ['45.7422222', '-85.50944444444444']}" https://mesocosm.org/mesocosm/ims-metu-mesocosm-system/,IMS-METU Mesocosm System,"Middle East Technical University (METU), Institute of Marine Sciences (IMS)",Turkey,Europe,"Middle East Technical University, Institute of Marine Sciences, 33731, Erdemli, Mersin, @@ -513,7 +513,7 @@ Mesocosm tanks are equipped with sensors including GHG measurements, photo credi Dedicated field laboratory and facilities, photo credits: Korhan Özkan     -","['http://mesocosm.org/wp-content/uploads/2023/12/G0018552_1.9MB-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/WhatsApp-Image-2022-07-27-at-10.33.44-AM-1-1024x576.jpeg', 'http://mesocosm.org/wp-content/uploads/2023/12/G0011377_1.8MB-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/IMG_9936_1.9MB-768x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/G0066411_1.9MB-1024x768.jpg']",,,,"['36.564427', ' 34.254018']","{'coordinates': ['36.564427', '34.254018']}",, +","['http://mesocosm.org/wp-content/uploads/2023/12/G0018552_1.9MB-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/WhatsApp-Image-2022-07-27-at-10.33.44-AM-1-1024x576.jpeg', 'http://mesocosm.org/wp-content/uploads/2023/12/G0011377_1.8MB-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/IMG_9936_1.9MB-768x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/G0066411_1.9MB-1024x768.jpg']",,,,"['36.564427', ' 34.254018']","{'coordinates': ['36.564427', '34.254018']}" https://mesocosm.org/mesocosm/bermuda-marine-mesocosm-facility-bmmf/,Bermuda Marine Mesocosm Facility (BMMF),ASU Bermuda Institute of Ocean Sciences (ASU BIOS),Bermuda,North America,"17 Biological Station, St. George’s GE01, Bermuda ","Dr. Yvonne Sawall Please login or request access to view contact information. @@ -598,7 +598,7 @@ Utility golf cart For quick and easy transport of life organisms from the boat t Mesocosm overview showing ~3/4 of the facility; photo credits: Yvonne Sawall One of the four 1500-L basins hosting coral fragments.; photo credits: Yvonne Sawall Three 40-L aquaria inside a 500-L basin, each hosting coral fragments. ; photo credits: Chloe Carbonne -","['http://mesocosm.org/wp-content/uploads/2024/11/B31560D9-B8BA-4EA4-9665-B13B46E9372A-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/11/2009F839-BFBF-4D3A-885D-30A359409B74-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/11/6DC60F28-580A-4046-91C5-4C57088CE81F-768x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2024/11/2CCD8F84-538A-40A1-9507-74E4794C3B3A-1024x768.jpg']",,,,"['32.370636', '-64.697763']","{'coordinates': ['32.370636', '-64.697763']}",, +","['http://mesocosm.org/wp-content/uploads/2024/11/B31560D9-B8BA-4EA4-9665-B13B46E9372A-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/11/2009F839-BFBF-4D3A-885D-30A359409B74-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/11/6DC60F28-580A-4046-91C5-4C57088CE81F-768x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2024/11/2CCD8F84-538A-40A1-9507-74E4794C3B3A-1024x768.jpg']",,,,"['32.370636', '-64.697763']","{'coordinates': ['32.370636', '-64.697763']}" https://mesocosm.org/mesocosm/limnotrons/,Limnotron,Netherlands Institute for Ecology (NIOO-KNAW),The Netherlands,Europe,"Netherlands Institute for Ecology (NIOO) Droevendaalsesteeg 10 6708 PB Wageningen @@ -647,7 +647,7 @@ Limnotron – a highly controlled experimental unit -","['http://mesocosm.org/wp-content/uploads/2017/02/Limnotron_400px2-300x214.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Limnotrons_400px1-268x300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/Limnotron-a-highly-controlled-experimental-unit-300x225.jpg']",,,,"['51.9876442', '5.6706486']","{'coordinates': ['51.9876442', '5.6706486']}",, +","['http://mesocosm.org/wp-content/uploads/2017/02/Limnotron_400px2-300x214.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Limnotrons_400px1-268x300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/Limnotron-a-highly-controlled-experimental-unit-300x225.jpg']",,,,"['51.9876442', '5.6706486']","{'coordinates': ['51.9876442', '5.6706486']}" https://mesocosm.org/mesocosm/aqua-stress/,Aqua-stress,University of Canberra,Australia,Australia,"Institute for Applied Ecology, Faculty of Science and Technology University of Canberra, Bruce, ACT, 2617, Australia ","Jon Bray @@ -688,7 +688,7 @@ Credit: Alica Tschierschke -","['http://mesocosm.org/wp-content/uploads/2019/03/Aqua-stress-1-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Aqua-stress-2-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Aqua-stress-3-300x200.jpg']",,,,"['-35.23511', ' 149.086653']","{'coordinates': ['-35.23511', '149.086653']}",, +","['http://mesocosm.org/wp-content/uploads/2019/03/Aqua-stress-1-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Aqua-stress-2-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Aqua-stress-3-300x200.jpg']",,,,"['-35.23511', ' 149.086653']","{'coordinates': ['-35.23511', '149.086653']}" https://mesocosm.org/mesocosm/mesocosm-gmbh/,MESOCOSM GmbH,Institut für Gewaesserschutz,Germany,Europe,"Institut für Gewaesserschutz Neu-Ulrichstein 5 D-35315 Homberg (Ohm) @@ -725,7 +725,7 @@ Mesocosm test basins -","['http://mesocosm.org/wp-content/uploads/2017/05/test-facility-mesocosmGmbH.de_.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/mesocosmGmbH.de_.jpg']",,,,"['50.7527558', '9.0331164']","{'coordinates': ['50.7527558', '9.0331164']}",, +","['http://mesocosm.org/wp-content/uploads/2017/05/test-facility-mesocosmGmbH.de_.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/mesocosmGmbH.de_.jpg']",,,,"['50.7527558', '9.0331164']","{'coordinates': ['50.7527558', '9.0331164']}" https://mesocosm.org/mesocosm/pohang-mesocosm-system/,Pohang Mesocosm System,Pohang University of Science and Technology,South Korea,Asia,"Pohang University of Science and Technology 77 CHEONGAM-RO.NAM-GU. POHANG.GYUNGBUK. @@ -744,7 +744,7 @@ Please login or request access to view contact information. 34.886946,128.623892 ",,,,,"http://climate.postech.ac.kr/board/view.do?iboardgroupseq=4&iboardmanagerseq=12 -",,,,,,"['34.886946', '128.623892']","{'coordinates': ['34.886946', '128.623892']}",, +",,,,,,"['34.886946', '128.623892']","{'coordinates': ['34.886946', '128.623892']}" https://mesocosm.org/mesocosm/national-experimental-platform-in-aquatic-ecology-planaqua/,National Experimental Platform in Aquatic Ecology (PLANAQUA),,France,Europe,"Ecole Normale Supérieure (ENS) National Centre of Scientific Research (CNRS) Université Pierre et Marie Curie (UPMC) @@ -779,7 +779,7 @@ Graphic of the PLANAQUA facility -","['http://mesocosm.org/wp-content/uploads/2017/02/Saint-Pierre_PLANAQUA-300x206.png', 'http://mesocosm.org/wp-content/uploads/2017/02/Plamaqua_Mesocosms_8.14-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Bild1-225x300.jpg']",,,,"['48.287979', '2.6759703']","{'coordinates': ['48.287979', '2.6759703']}",, +","['http://mesocosm.org/wp-content/uploads/2017/02/Saint-Pierre_PLANAQUA-300x206.png', 'http://mesocosm.org/wp-content/uploads/2017/02/Plamaqua_Mesocosms_8.14-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Bild1-225x300.jpg']",,,,"['48.287979', '2.6759703']","{'coordinates': ['48.287979', '2.6759703']}" https://mesocosm.org/mesocosm/cer-mesocosms/,CER Mesocosms,Centre for Ecological Research,Hungary,Europe,"Centre for Ecological Research H-1113 Budapest, Karolina út 29. Hungary @@ -839,7 +839,7 @@ CER mesocosms: in situ experiment (photo credit: Zsófia Horváth) -","['http://mesocosm.org/wp-content/uploads/2023/07/DJI_0203-fotor-20230722131035-1024x637.jpg', 'http://mesocosm.org/wp-content/uploads/2021/05/3.m-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2021/05/4.m-1024x682.jpg']",,,,"['47.705993', '19.229583']","{'coordinates': ['47.705993', '19.229583']}",, +","['http://mesocosm.org/wp-content/uploads/2023/07/DJI_0203-fotor-20230722131035-1024x637.jpg', 'http://mesocosm.org/wp-content/uploads/2021/05/3.m-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2021/05/4.m-1024x682.jpg']",,,,"['47.705993', '19.229583']","{'coordinates': ['47.705993', '19.229583']}" https://mesocosm.org/mesocosm/consortium-gwrc-mesocosm-facility/,Great Waters Research Consortium (GWRC) mesocosm facility,"Natural Resources Research Great Waters Research Institute (NRRI), University of Minnesota Duluth; Lake Superior Research Institute (LSRI), University of Wisconsin Superior (joint project)",USA,North America,"Montreal Pier Rd, Superior, WI 54880 USA @@ -888,7 +888,7 @@ Figure credits: Euan D. Reavie -","['http://mesocosm.org/wp-content/uploads/2022/09/pic1.2-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2022/09/pic2.2-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2022/09/pic3-1-1024x625.jpg']",,,,"['46.7109', '-92.0484']","{'coordinates': ['46.7109', '-92.0484']}",, +","['http://mesocosm.org/wp-content/uploads/2022/09/pic1.2-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2022/09/pic2.2-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2022/09/pic3-1-1024x625.jpg']",,,,"['46.7109', '-92.0484']","{'coordinates': ['46.7109', '-92.0484']}" https://mesocosm.org/mesocosm/bolmen-forskningsstation/,Bolmen Forskningsstation,Sweden Water Research AB,Sweden,Europe,"Sweden Water Research AB Ideon Science Park Scheelevägen 15 SE-223 70 Lund @@ -927,7 +927,7 @@ Photo credit: Juha Rankinen -","['http://mesocosm.org/wp-content/uploads/2018/05/Bolmen_2-1024x577.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Bolmen_3-1024x577.jpg']",,,,"['56.943190', ' 13.645610']","{'coordinates': ['56.943190', '13.645610']}",, +","['http://mesocosm.org/wp-content/uploads/2018/05/Bolmen_2-1024x577.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Bolmen_3-1024x577.jpg']",,,,"['56.943190', ' 13.645610']","{'coordinates': ['56.943190', '13.645610']}" https://mesocosm.org/mesocosm/sinderhoeve/,Sinderhoeve,Wageningen Environmental Research,The Netherlands,Europe,"Telefoonweg 77 6871NJ Renkum The Netherlands @@ -1003,7 +1003,7 @@ SInderhoeve areal; Figure cerdit: Wageningen Environmental Research   -","['http://mesocosm.org/wp-content/uploads/2018/11/Foto-sloten-sinderhoeve-1024x697.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/DSC02496-768x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/IMG_2919-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/Perspectief-Sinderhoeve-kl-1024x679.jpg']",,,,"['51.998681', ' 5.752708']","{'coordinates': ['51.998681', '5.752708']}",, +","['http://mesocosm.org/wp-content/uploads/2018/11/Foto-sloten-sinderhoeve-1024x697.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/DSC02496-768x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/IMG_2919-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/Perspectief-Sinderhoeve-kl-1024x679.jpg']",,,,"['51.998681', ' 5.752708']","{'coordinates': ['51.998681', '5.752708']}" https://mesocosm.org/mesocosm/iberian-pond-network-ipn/,Iberian Pond Network (IPN),"InBio/CIBIO, University of Évora","Portugal, Spain",Europe,"InBio/CIBIO, University of Évora, Largo dos Colegiais, 7000 Évora, Portugal ","Prof. Miguel B. Araújo @@ -1045,7 +1045,7 @@ Toledo – La Higueruela Experimental Farm (Spain) -","['http://mesocosm.org/wp-content/uploads/2017/02/IberanPondProject_400x1-300x253.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/charcas_evora_3_295.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/charcas_higueruela_3_295.jpg']",,,,"['41.1465479', '-8.6156998']","{'coordinates': ['41.1465479', '-8.6156998']}",, +","['http://mesocosm.org/wp-content/uploads/2017/02/IberanPondProject_400x1-300x253.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/charcas_evora_3_295.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/charcas_higueruela_3_295.jpg']",,,,"['41.1465479', '-8.6156998']","{'coordinates': ['41.1465479', '-8.6156998']}" https://mesocosm.org/mesocosm/iberian-pond-network-ipn/,Iberian Pond Network (IPN),"InBio/CIBIO, University of Évora","Portugal, Spain",Europe,"InBio/CIBIO, University of Évora, Largo dos Colegiais, 7000 Évora, Portugal ","Prof. Miguel B. Araújo @@ -1087,7 +1087,7 @@ Toledo – La Higueruela Experimental Farm (Spain) -","['http://mesocosm.org/wp-content/uploads/2017/02/IberanPondProject_400x1-300x253.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/charcas_evora_3_295.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/charcas_higueruela_3_295.jpg']",,,,"['38.5685819', '-7.9107097']","{'coordinates': ['38.5685819', '-7.9107097']}",, +","['http://mesocosm.org/wp-content/uploads/2017/02/IberanPondProject_400x1-300x253.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/charcas_evora_3_295.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/charcas_higueruela_3_295.jpg']",,,,"['38.5685819', '-7.9107097']","{'coordinates': ['38.5685819', '-7.9107097']}" https://mesocosm.org/mesocosm/aquatic-research-facility-at-the-university-of-kansas-field-station/,Aquatic Research Facility at the University of Kansas Field Station,University of Kansas Field Station,USA,North America,"350 Wild Horse Road, Lawrence, KS 66044, USA ","Ted Harris Please login or request access to view contact information. @@ -1406,7 +1406,7 @@ Sampling large mesocosm tanks – Photo Credit Kirsten Bosnak -","['http://mesocosm.org/wp-content/uploads/2019/04/View-of-tanks-replicated-ponds-and-catchment-ponds-–-Photo-Credit-Scott-Campbell-300x199.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/View-of-Cross-Reservoir-–-Photo-Credit-Kirsten-Bosnak-300x199.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/View-core-field-station-facilities-–-Photo-Credit-Google-Earth-300x200.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/View-of-inoculated-mesocosms-in-the-3-season-greenhouse-4-season-greenhouse-also-exists-–-Photo-Credit-Ted-Harris-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/One-set-of-the-replicated-ponds–-Photo-Credit-Scott-Campbell-300x199.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/Sampling-large-mesocosm-tanks-–-Photo-Credit-Kirsten-Bosnak-300x199.jpeg']",['http://mesocosm.org/wp-content/uploads/2019/04/equipment-300x199.jpeg'],['http://mesocosm.org/wp-content/uploads/2019/04/lodging-300x199.jpeg'],,"['39.048918', '-95.191171']","{'coordinates': ['39.048918', '-95.191171']}",, +","['http://mesocosm.org/wp-content/uploads/2019/04/View-of-tanks-replicated-ponds-and-catchment-ponds-–-Photo-Credit-Scott-Campbell-300x199.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/View-of-Cross-Reservoir-–-Photo-Credit-Kirsten-Bosnak-300x199.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/View-core-field-station-facilities-–-Photo-Credit-Google-Earth-300x200.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/View-of-inoculated-mesocosms-in-the-3-season-greenhouse-4-season-greenhouse-also-exists-–-Photo-Credit-Ted-Harris-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/One-set-of-the-replicated-ponds–-Photo-Credit-Scott-Campbell-300x199.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/04/Sampling-large-mesocosm-tanks-–-Photo-Credit-Kirsten-Bosnak-300x199.jpeg']",['http://mesocosm.org/wp-content/uploads/2019/04/equipment-300x199.jpeg'],['http://mesocosm.org/wp-content/uploads/2019/04/lodging-300x199.jpeg'],,"['39.048918', '-95.191171']","{'coordinates': ['39.048918', '-95.191171']}" https://mesocosm.org/mesocosm/life-infrastructure-ecp-facility-behavioural-ecology-of-fish-st-pee-lapitxuri/,"LIFE Infrastructure - ECP Facility (Behavioural Ecology of Fish, St Pée/Lapitxuri)",Infrastructure multi-site: RI LIFE,France,Europe,"RI LIFE INRA-AQUAPOLE Agnes Bardonnet 64310 St-Pée-sur-Nivelle @@ -1501,7 +1501,7 @@ Lapitxuri semi-natural stream, Foto credit: Glise/INRA   -","['http://mesocosm.org/wp-content/uploads/2018/11/ECP_Aerial-view_St-Pée-1024x741.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Flume-1024x684.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Aerial-view_Lapitxuri.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Lapitxuri-semi-natural-stream.jpg']",,,,"['43.3561111', ' -1.5616666666666668']","{'coordinates': ['43.3561111', '-1.5616666666666668']}",, +","['http://mesocosm.org/wp-content/uploads/2018/11/ECP_Aerial-view_St-Pée-1024x741.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Flume-1024x684.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Aerial-view_Lapitxuri.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Lapitxuri-semi-natural-stream.jpg']",,,,"['43.3561111', ' -1.5616666666666668']","{'coordinates': ['43.3561111', '-1.5616666666666668']}" https://mesocosm.org/mesocosm/life-infrastructure-ecp-facility-behavioural-ecology-of-fish-st-pee-lapitxuri/,"LIFE Infrastructure - ECP Facility (Behavioural Ecology of Fish, St Pée/Lapitxuri)",Infrastructure multi-site: RI LIFE,France,Europe,"RI LIFE INRA-AQUAPOLE Agnes Bardonnet 64310 St-Pée-sur-Nivelle @@ -1596,7 +1596,7 @@ Lapitxuri semi-natural stream, Foto credit: Glise/INRA   -","['http://mesocosm.org/wp-content/uploads/2018/11/ECP_Aerial-view_St-Pée-1024x741.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Flume-1024x684.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Aerial-view_Lapitxuri.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Lapitxuri-semi-natural-stream.jpg']",,,,"[' 43.2833333', ' -1.4822222222222223']","{'coordinates': ['43.2833333', '-1.4822222222222223']}",, +","['http://mesocosm.org/wp-content/uploads/2018/11/ECP_Aerial-view_St-Pée-1024x741.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Flume-1024x684.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Aerial-view_Lapitxuri.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/ECP_Lapitxuri-semi-natural-stream.jpg']",,,,"[' 43.2833333', ' -1.4822222222222223']","{'coordinates': ['43.2833333', '-1.4822222222222223']}" https://mesocosm.org/mesocosm/heated-aquatic-mesocosms-for-climate-warming-experiment/,Heated Aquatic Mesocosms for Climate Warming Experiment,"Nanjing Institute of Geography and Limnology, Chinese Academy of Sciences",China,Asia,"73 East Beijing Road, Nanjing, China ","Dr. Hu He Please login or request access to view contact information. @@ -1646,7 +1646,7 @@ Water temperature trends -","['https://www.aquacosm.eu/wp-content/uploads/2019/03/location-300x170.png', 'https://www.aquacosm.eu/wp-content/uploads/2019/03/Experiment-setting-300x225.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Unheated-mesocosms-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Heated-mesocosms-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Water-temperature-trends-300x209.png']",,,,"['31.418517', '120.218446']","{'coordinates': ['31.418517', '120.218446']}",, +","['https://www.aquacosm.eu/wp-content/uploads/2019/03/location-300x170.png', 'https://www.aquacosm.eu/wp-content/uploads/2019/03/Experiment-setting-300x225.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Unheated-mesocosms-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Heated-mesocosms-225x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Water-temperature-trends-300x209.png']",,,,"['31.418517', '120.218446']","{'coordinates': ['31.418517', '120.218446']}" https://mesocosm.org/mesocosm/tropical-aquatic-ecology-mesocosm/,Tropical Aquatic Ecology Mesocosm,State University of Goiás,Brazil,South America,"BR153, Nº3105, Anápolis, Goiás, Brazil. ","Dr. João Carlos Nabout Please login or request access to view contact information. @@ -1694,7 +1694,7 @@ Figure 4 Mesocosm of Tropical Aquatic Ecology – Finalized (Photo credit: João -","['http://mesocosm.org/wp-content/uploads/2019/03/Figure-1-Mesocosm-of-Tropical-Aquatic-Ecology-–-Phase-of-construction-300x225.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Figure-2-Mesocosm-of-Tropical-Aquatic-Ecology-–-Phase-of-construction-300x128.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Figure-3-Mesocosm-of-Tropical-Aquatic-Ecology-–-Pilot-of-first-studies-300x224.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Figure-4-Mesocosm-of-Tropical-Aquatic-Ecology-Finalized-300x127.jpeg']",,,,"['-16.37930', '-48.94672']","{'coordinates': ['-16.37930', '-48.94672']}",, +","['http://mesocosm.org/wp-content/uploads/2019/03/Figure-1-Mesocosm-of-Tropical-Aquatic-Ecology-–-Phase-of-construction-300x225.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Figure-2-Mesocosm-of-Tropical-Aquatic-Ecology-–-Phase-of-construction-300x128.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Figure-3-Mesocosm-of-Tropical-Aquatic-Ecology-–-Pilot-of-first-studies-300x224.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Figure-4-Mesocosm-of-Tropical-Aquatic-Ecology-Finalized-300x127.jpeg']",,,,"['-16.37930', '-48.94672']","{'coordinates': ['-16.37930', '-48.94672']}" https://mesocosm.org/mesocosm/life-infrastructure-pearl-facility-experimental-aquatic-platform-rennes-le-rheu/,"LIFE Infrastructure - PEARL facility (Experimental Aquatic Platform, Rennes/Le Rheu)",Infrastructure multi-site: RI LIFE,France,Europe,"RI LIFE INRA-AQUAPOLE Agnes Bardonnet 64310 St-Pée-sur-Nivelle @@ -1793,7 +1793,7 @@ Series of mesocosms 30 m3 and 9 m3, Foto credit: Beaumont/INRA   -","['http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Aerial_view_Rennes_experimental_complex.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Serie_of_30_mesocoms_3-m3-1024x678.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Aerial_view-Ponds-Station_PF-Etangs-1024x594.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Mesocosms_Series_30m3_and_9-m3-1024x678.jpg']",,,,"['48.1130833', ' -1.4822222222222223']","{'coordinates': ['48.1130833', '-1.4822222222222223']}",, +","['http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Aerial_view_Rennes_experimental_complex.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Serie_of_30_mesocoms_3-m3-1024x678.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Aerial_view-Ponds-Station_PF-Etangs-1024x594.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Mesocosms_Series_30m3_and_9-m3-1024x678.jpg']",,,,"['48.1130833', ' -1.4822222222222223']","{'coordinates': ['48.1130833', '-1.4822222222222223']}" https://mesocosm.org/mesocosm/life-infrastructure-pearl-facility-experimental-aquatic-platform-rennes-le-rheu/,"LIFE Infrastructure - PEARL facility (Experimental Aquatic Platform, Rennes/Le Rheu)",Infrastructure multi-site: RI LIFE,France,Europe,"RI LIFE INRA-AQUAPOLE Agnes Bardonnet 64310 St-Pée-sur-Nivelle @@ -1892,7 +1892,7 @@ Series of mesocosms 30 m3 and 9 m3, Foto credit: Beaumont/INRA   -","['http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Aerial_view_Rennes_experimental_complex.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Serie_of_30_mesocoms_3-m3-1024x678.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Aerial_view-Ponds-Station_PF-Etangs-1024x594.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Mesocosms_Series_30m3_and_9-m3-1024x678.jpg']",,,,"[' 48.1202778', ' -1.7919444444444443']","{'coordinates': ['48.1202778', '-1.7919444444444443']}",, +","['http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Aerial_view_Rennes_experimental_complex.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Serie_of_30_mesocoms_3-m3-1024x678.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Aerial_view-Ponds-Station_PF-Etangs-1024x594.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/PEARL_Mesocosms_Series_30m3_and_9-m3-1024x678.jpg']",,,,"[' 48.1202778', ' -1.7919444444444443']","{'coordinates': ['48.1202778', '-1.7919444444444443']}" https://mesocosm.org/mesocosm/kosmos-kiel-off-shore-mesocosms-for-ocean-simulations/,KOSMOS (Kiel Off-Shore Mesocosms for Ocean Simulations),GEOMAR-Helmholtz Center for Ocean Research Kiel,Germany,Europe,"GEOMAR-Helmholtz Center for Ocean Research West shore campus Düsternbrooker Weg 20 @@ -1938,7 +1938,7 @@ Sampling of the KOSMOS mesocosms during an experiment on the effects of ocean ac -","['http://mesocosm.org/wp-content/uploads/2017/02/KOSMOS-Raunefjord_2011-300x142.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/KOSMOS-deployment-with-the-Spanish-research-vessel-„Hesprides“-off-Gran-Canaria-in-2014-300x225.png', 'http://mesocosm.org/wp-content/uploads/2017/03/Sampling-of-the-KOSMOS-mesocosms-during-an-experiment-on-the-effects-of-ocean-acidification-off-Gran-Canaria-in-2014-300x225.png']",,,,"['54.330034', '10.1482026']","{'coordinates': ['54.330034', '10.1482026']}",, +","['http://mesocosm.org/wp-content/uploads/2017/02/KOSMOS-Raunefjord_2011-300x142.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/KOSMOS-deployment-with-the-Spanish-research-vessel-„Hesprides“-off-Gran-Canaria-in-2014-300x225.png', 'http://mesocosm.org/wp-content/uploads/2017/03/Sampling-of-the-KOSMOS-mesocosms-during-an-experiment-on-the-effects-of-ocean-acidification-off-Gran-Canaria-in-2014-300x225.png']",,,,"['54.330034', '10.1482026']","{'coordinates': ['54.330034', '10.1482026']}" https://mesocosm.org/mesocosm/maximus/,MAXIMUS,Roskilde University,Denmark,Europe,"Roskilde University Universitetsvej 1 P.O. Box 260 @@ -1957,7 +1957,7 @@ Please login or request access to view contact information. ",,,,,"http://rucforsk.ruc.dk/site/person/bhansen Impaq project: Turbot tracked in a tanknutrients, -",,,,,,"['55.6519602', '12.137471']","{'coordinates': ['55.6519602', '12.137471']}",, +",,,,,,"['55.6519602', '12.137471']","{'coordinates': ['55.6519602', '12.137471']}" https://mesocosm.org/mesocosm/innotech-alberta-aquatic-mesocosm-facility/,InnoTech Alberta Aquatic Mesocosm Facility,InnoTech Alberta,Canada,North America,"PO Bag 4000 Hwy 16A & 75 Street Vegreville, Alberta, Canada, T9C 1T4 @@ -2060,7 +2060,7 @@ A water layer is maintained at the bottom of the mesocosms during winter, photo InnoTech Alberta Aquatic Mesocosm Facility, photo credit: InnoTech Alberta Elevated view of mesocosm facility with 2 smaller tanks nested within each of the main mesocosm tanks on the bermed containment pad. Photo Credit: InnoTech Alberta Mescocosms being used for an aquatic experiment. Note the floating automated CO2 flux chambers in the tanks in the foreground. Photo Credit: InnoTech Alberta -","['http://mesocosm.org/wp-content/uploads/2023/08/sunset-innotech-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/08/sinter-innotech.jpg', 'http://mesocosm.org/wp-content/uploads/2023/08/birdview-InnoTech-1024x469.jpg', 'http://mesocosm.org/wp-content/uploads/2023/08/birdeye.jpg', 'http://mesocosm.org/wp-content/uploads/2023/08/ter2.jpg']",,,,"['53.506641', '-112.093612']","{'coordinates': ['53.506641', '-112.093612']}",, +","['http://mesocosm.org/wp-content/uploads/2023/08/sunset-innotech-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/08/sinter-innotech.jpg', 'http://mesocosm.org/wp-content/uploads/2023/08/birdview-InnoTech-1024x469.jpg', 'http://mesocosm.org/wp-content/uploads/2023/08/birdeye.jpg', 'http://mesocosm.org/wp-content/uploads/2023/08/ter2.jpg']",,,,"['53.506641', '-112.093612']","{'coordinates': ['53.506641', '-112.093612']}" https://mesocosm.org/mesocosm/lmu-mesocosms/,LMU Mesocosms,Ludwig-Maximilians-Universität,Germany,Europe,"Ludwig-Maximilians-Universität München Department Biologie II Aquatic Ecology @@ -2096,7 +2096,7 @@ Munich Mesocosm facility on Campus, Photo: Dr. Stella Berger -","['http://mesocosm.org/wp-content/uploads/2017/02/Munih_mesocosms2-300x188.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Munich_mesocosms1-300x225.jpg']",,,,"['48.109151', '11.45844']","{'coordinates': ['48.109151', '11.45844']}",, +","['http://mesocosm.org/wp-content/uploads/2017/02/Munih_mesocosms2-300x188.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Munich_mesocosms1-300x225.jpg']",,,,"['48.109151', '11.45844']","{'coordinates': ['48.109151', '11.45844']}" https://mesocosm.org/mesocosm/crimac-calabria-marine-centre/,Crimac – Calabria Marine Centre,Stazione Zoologica Anton Dohrn,Italy,Europe,"Contrada Torre Spaccata, Località Torre Spaccata, 87071 Amendolara (CS), @@ -2146,7 +2146,7 @@ https://www.szn.it/index.php/it/chi-siamo/le-nostre-sedi/sedi-territoriali-di-ti ","Amendolara Seat – outdoor facility, photo credits: Detail of Rack, photo credits: Filtration System, photo credit: -","['http://mesocosm.org/wp-content/uploads/2025/06/Photo-1.2-Amendolara-seat-outdoor-facility-Kopie-1024x714.jpg', 'http://mesocosm.org/wp-content/uploads/2025/06/Photo-3-Detail-of-Rack-2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2025/06/Photo-2.2-Filtration-System-Kopie-1024x768.jpg']",,,,['39.9588889'],{'coordinates': nan},, +","['http://mesocosm.org/wp-content/uploads/2025/06/Photo-1.2-Amendolara-seat-outdoor-facility-Kopie-1024x714.jpg', 'http://mesocosm.org/wp-content/uploads/2025/06/Photo-3-Detail-of-Rack-2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2025/06/Photo-2.2-Filtration-System-Kopie-1024x768.jpg']",,,,['39.9588889'],{'coordinates': nan} https://mesocosm.org/mesocosm/crimac-calabria-marine-centre/,Crimac – Calabria Marine Centre,Stazione Zoologica Anton Dohrn,Italy,Europe,"Contrada Torre Spaccata, Località Torre Spaccata, 87071 Amendolara (CS), @@ -2196,7 +2196,7 @@ https://www.szn.it/index.php/it/chi-siamo/le-nostre-sedi/sedi-territoriali-di-ti ","Amendolara Seat – outdoor facility, photo credits: Detail of Rack, photo credits: Filtration System, photo credit: -","['http://mesocosm.org/wp-content/uploads/2025/06/Photo-1.2-Amendolara-seat-outdoor-facility-Kopie-1024x714.jpg', 'http://mesocosm.org/wp-content/uploads/2025/06/Photo-3-Detail-of-Rack-2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2025/06/Photo-2.2-Filtration-System-Kopie-1024x768.jpg']",,,,['16.62666666666667'],{'coordinates': nan},, +","['http://mesocosm.org/wp-content/uploads/2025/06/Photo-1.2-Amendolara-seat-outdoor-facility-Kopie-1024x714.jpg', 'http://mesocosm.org/wp-content/uploads/2025/06/Photo-3-Detail-of-Rack-2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2025/06/Photo-2.2-Filtration-System-Kopie-1024x768.jpg']",,,,['16.62666666666667'],{'coordinates': nan} https://mesocosm.org/mesocosm/ceh-aquatic-mesocosm-facility-camf/,CEH Aquatic Mesocosm Facility (CAMF),Centre for Ecology & Hydrology (CEH),United Kingdom,Europe,"Centre for Ecology & Hydrology (CEH) Lancaster University Library Avenue @@ -2254,7 +2254,7 @@ Figure credits: Heidrun Feuchtmayr -","['http://mesocosm.org/wp-content/uploads/2019/07/IMG_5163-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2019/07/IMG_5156-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2019/07/CAMF-schematic.jpg']",,,,"['54.014373', ' -2.777004']","{'coordinates': ['54.014373', '-2.777004']}",, +","['http://mesocosm.org/wp-content/uploads/2019/07/IMG_5163-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2019/07/IMG_5156-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2019/07/CAMF-schematic.jpg']",,,,"['54.014373', ' -2.777004']","{'coordinates': ['54.014373', '-2.777004']}" https://mesocosm.org/mesocosm/experimental-mesocosm-facility-at-friday-harbor-labs-fhl/,Experimental Mesocosm Facility at Friday Harbor Labs (FHL),University of Washington,USA,North-America,"University of Washington School of Oceanography 1503 NE Boat Street @@ -2317,7 +2317,7 @@ The lab is supplied with conditioned water from a custom filtration and CO2 stri -","['http://mesocosm.org/wp-content/uploads/2017/05/outdoor-oalab4-300x129.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/indoor-oalab3.jpg']",,,,"['48.5466503', '-123.0127619']","{'coordinates': ['48.5466503', '-123.0127619']}",, +","['http://mesocosm.org/wp-content/uploads/2017/05/outdoor-oalab4-300x129.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/indoor-oalab3.jpg']",,,,"['48.5466503', '-123.0127619']","{'coordinates': ['48.5466503', '-123.0127619']}" https://mesocosm.org/mesocosm/mekjarvik-research-station/,Mekjarvik Research Station,International Research Institute of Stavanger (IRIS),Norway,Europe,"IRIS P. O. Box 8046, 4068 Stavanger, (mailing address) Prof. Olav Hanssensvei 15, 4021 Stavanger (visiting address) @@ -2384,7 +2384,7 @@ Photo: Leon Moodley   -","['http://mesocosm.org/wp-content/uploads/2018/04/Stavanger-1-300x279.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/Stavanger-2-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/Stavanger-3-300x200.jpg']",,,,"['59.0206314', ' 5.6159267000000455']","{'coordinates': ['59.0206314', '5.6159267000000455']}",, +","['http://mesocosm.org/wp-content/uploads/2018/04/Stavanger-1-300x279.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/Stavanger-2-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/Stavanger-3-300x200.jpg']",,,,"['59.0206314', ' 5.6159267000000455']","{'coordinates': ['59.0206314', '5.6159267000000455']}" https://mesocosm.org/mesocosm/mesocosms-at-the-upper-parana-river-nupelia-field-station/,Mesocosms at the Upper Paraná River (Nupélia Field Station),Universidade Estadual de Maringá – UEM,Brazil,South America,"Av. Colombo 5790, Maringá, PR, Brazil, 87020-900 ","Roger Paulo Mormul Please login or request access to view contact information. @@ -2413,7 +2413,7 @@ Please login or request access to view contact information. -","['http://mesocosm.org/wp-content/uploads/2019/03/Mesocosmos-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Fieldstation-300x224.png']",,,,"['-22.765525', '-53.2572166']","{'coordinates': ['-22.765525', '-53.2572166']}",, +","['http://mesocosm.org/wp-content/uploads/2019/03/Mesocosmos-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Fieldstation-300x224.png']",,,,"['-22.765525', '-53.2572166']","{'coordinates': ['-22.765525', '-53.2572166']}" https://mesocosm.org/mesocosm/sites-aquanet-asa-research-station/,SITES AquaNet – Asa Research Station,SITES and Swedish University of Agricultural Sciences,Sweden,Europe,"Sveriges lantbruksuniversitet (SLU) Unit for Field-based Forest Research Asa Research Station @@ -2455,7 +2455,7 @@ Photo credit: Ola Langvall   -","['http://mesocosm.org/wp-content/uploads/2018/05/Asa_1-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Asa_3-1024x574.jpg']",,,,"['57.164325', ' 14.782712']","{'coordinates': ['57.164325', '14.782712']}",, +","['http://mesocosm.org/wp-content/uploads/2018/05/Asa_1-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Asa_3-1024x574.jpg']",,,,"['57.164325', ' 14.782712']","{'coordinates': ['57.164325', '14.782712']}" https://mesocosm.org/mesocosm/solbergstrand-experimental-facility-sef/,Solbergstrand Experimental Facility (SEF),Norwegian Institute for Water Research,Norway,Europe,"Norwegian Institute for Water Research NIVA Oslo Gaustadalléen 21 @@ -2515,7 +2515,7 @@ oddbjoern.pettersen@niva.no -","['http://mesocosm.org/wp-content/uploads/2017/02/Drøbak_mesocosms-construction_400px-300x176.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Solbergstrand_Mesocosms_400x1-300x221.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Solbergstrand_Flumes_400px2-300x136.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Solberstrand_Flumes_400px1-300x213.jpg']",,,,"['59.6157541', '10.6528178']","{'coordinates': ['59.6157541', '10.6528178']}",, +","['http://mesocosm.org/wp-content/uploads/2017/02/Drøbak_mesocosms-construction_400px-300x176.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Solbergstrand_Mesocosms_400x1-300x221.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Solbergstrand_Flumes_400px2-300x136.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Solberstrand_Flumes_400px1-300x213.jpg']",,,,"['59.6157541', '10.6528178']","{'coordinates': ['59.6157541', '10.6528178']}" https://mesocosm.org/mesocosm/sletvik-field-station/,Sletvik Field Station,Norwegian University of Science and Technology,Norway,Europe,"Norwegian University of Science and Technology Department of Biology Trondhjem Biological Station @@ -2536,7 +2536,7 @@ sea based mesocosms ",,,"Two large lecturing and three smaller laboratories, one of which has access to salt water, and a meeting room. ","Accommodation for 50 people, kitchen and dining room, lounge, bedrooms, showers, washing rooms and a sauna. All meals are served at the station and normally consist of a self-service breakfast, lunch packet and dinner. The kitchen can be used in the evening by appointment with the station’s attendant chef. ","http://www.ntnu.edu/biology/sletvik-field-station -",,,,,,"['63.5929285', '9.5457926']","{'coordinates': ['63.5929285', '9.5457926']}",, +",,,,,,"['63.5929285', '9.5457926']","{'coordinates': ['63.5929285', '9.5457926']}" https://mesocosm.org/mesocosm/wuhan-warming-mesocosm-facility-wwmf/,Wuhan Warming Mesocosm Facility (WWMF),"1. Institute of Hydrobiology, Chinese Academy of Sciences (IHB-CAS); 2. College of Fischeries, Huazhong Agricultural University",China,Asia," Institute of Hydrobiology, Chinese Academy of Sciences; Address: No. 7 Donghu South Road, Wuchang District, Wuhan, Hubei Province, China Huazhong Agricultural University; Address: No. 1, Shizishan Street, Hongshan District, Wuhan, Hubei Province, China @@ -2590,7 +2590,7 @@ Photo credit: Chao Li -","['http://mesocosm.org/wp-content/uploads/2019/01/WWMF2.jpg', 'http://mesocosm.org/wp-content/uploads/2019/01/WWMF1-1024x767.jpg']",,,,"['30.4670833', ' 114.35961111111111']","{'coordinates': ['30.4670833', '114.35961111111111']}",, +","['http://mesocosm.org/wp-content/uploads/2019/01/WWMF2.jpg', 'http://mesocosm.org/wp-content/uploads/2019/01/WWMF1-1024x767.jpg']",,,,"['30.4670833', ' 114.35961111111111']","{'coordinates': ['30.4670833', '114.35961111111111']}" https://mesocosm.org/mesocosm/kob-kiel-outdoor-benthocosms/,KOB (Kiel-Outdoor-Benthocosms),GEOMAR-Helmholtz Center for Ocean Research,Germany,Europe,"GEOMAR-Helmholtz Center for Ocean Research West shore campus Düsternbrooker Weg 20 @@ -2630,7 +2630,7 @@ KOB – Kiel Outdoor Benthocosms (Photo: Mark Lenz) -","['http://mesocosm.org/wp-content/uploads/2017/02/KOB_2_400_Wahl_1-282x300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/KOB_3_400_Lenz-300x201.jpg']",,,,"['54.330034', '10.1482026']","{'coordinates': ['54.330034', '10.1482026']}",, +","['http://mesocosm.org/wp-content/uploads/2017/02/KOB_2_400_Wahl_1-282x300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/KOB_3_400_Lenz-300x201.jpg']",,,,"['54.330034', '10.1482026']","{'coordinates': ['54.330034', '10.1482026']}" https://mesocosm.org/mesocosm/the-sven-loven-centre-for-marine-sciences/,The Sven Lovén Centre for Marine Sciences,University of Gothenburg,Sweden,Europe,"University of Gothenburg PO Box 100, SE-405 30 Gothenburg, SWEDEN Visiting address: Vasaparken @@ -2661,7 +2661,7 @@ ecotrons -",['http://mesocosm.org/wp-content/uploads/2017/05/marine-ecotron.jpg'],,,,"['58.2498484', '11.4449296']","{'coordinates': ['58.2498484', '11.4449296']}",, +",['http://mesocosm.org/wp-content/uploads/2017/05/marine-ecotron.jpg'],,,,"['58.2498484', '11.4449296']","{'coordinates': ['58.2498484', '11.4449296']}" https://mesocosm.org/mesocosm/medimeer-mediterranean-platform-for-marine-ecosystem-experimental-research/,MEDIMEER (MEDIterranean platform for Marine Ecosystem Experimental Research),CNRS,France,Europe,"MEDIMEER 2 Rue des Chantiers 34200, Sète @@ -2708,7 +2708,7 @@ Fig.3 LAMP in Dia Island, Crete (Photo: Dr. Behzad Mostajir) -","['http://mesocosm.org/wp-content/uploads/2017/03/Fig.1-Permanent-floating-structure-Photo-Dr.-Behzad-Mostajir.png', 'http://mesocosm.org/wp-content/uploads/2017/03/Fig.2-Pelagic-mesocosms-Photo-Dr.-Behzad-Mostajir.png', 'http://mesocosm.org/wp-content/uploads/2017/02/LAMP-300x129.png']",,,,"['43.4118721', '3.6907914']","{'coordinates': ['43.4118721', '3.6907914']}",, +","['http://mesocosm.org/wp-content/uploads/2017/03/Fig.1-Permanent-floating-structure-Photo-Dr.-Behzad-Mostajir.png', 'http://mesocosm.org/wp-content/uploads/2017/03/Fig.2-Pelagic-mesocosms-Photo-Dr.-Behzad-Mostajir.png', 'http://mesocosm.org/wp-content/uploads/2017/02/LAMP-300x129.png']",,,,"['43.4118721', '3.6907914']","{'coordinates': ['43.4118721', '3.6907914']}" https://mesocosm.org/mesocosm/rsd-facility/,RSD Facility,Faculty of Food Sciences and Fisheries,Poland,Europe,"Kazimierza Królewicza 4, 71550 Szczecin, Poland ","Remigiusz Panicz Please login or request access to view contact information. @@ -2776,7 +2776,7 @@ Kempter J., Kiełpiński M., Panicz R., Sadowski J., Mysłowski B., Bergmann S. -","['http://mesocosm.org/wp-content/uploads/2019/03/RSD-Facility-300x177.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-69-of-76-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-22-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-20-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-19-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/PART_1548849527972-225x300.jpeg']",,,,"['53.209861', '14.463944']","{'coordinates': ['53.209861', '14.463944']}",, +","['http://mesocosm.org/wp-content/uploads/2019/03/RSD-Facility-300x177.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-69-of-76-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-22-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-20-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-19-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/PART_1548849527972-225x300.jpeg']",,,,"['53.209861', '14.463944']","{'coordinates': ['53.209861', '14.463944']}" https://mesocosm.org/mesocosm/rsd-facility/,RSD Facility,Faculty of Food Sciences and Fisheries,Poland,Europe,"Kazimierza Królewicza 4, 71550 Szczecin, Poland ","Remigiusz Panicz Please login or request access to view contact information. @@ -2844,7 +2844,7 @@ Kempter J., Kiełpiński M., Panicz R., Sadowski J., Mysłowski B., Bergmann S. -","['http://mesocosm.org/wp-content/uploads/2019/03/RSD-Facility-300x177.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-69-of-76-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-22-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-20-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-19-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/PART_1548849527972-225x300.jpeg']",,,,"['53.44505', '14.562861']","{'coordinates': ['53.44505', '14.562861']}",, +","['http://mesocosm.org/wp-content/uploads/2019/03/RSD-Facility-300x177.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-69-of-76-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-22-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-20-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Dolna-krew-jesiotry-2014-19-of-35-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/PART_1548849527972-225x300.jpeg']",,,,"['53.44505', '14.562861']","{'coordinates': ['53.44505', '14.562861']}" https://mesocosm.org/mesocosm/gault-nature-reserve-mesocosm-platform/,Gault Nature Reserve Mesocosm Platform,McGill University,Canada,North America,"845 Sherbrooke St W Montreal QC H3A 0G4 @@ -2915,7 +2915,7 @@ Photo credit: Egor Katkov -","['http://mesocosm.org/wp-content/uploads/2019/08/Gault-Mesocosms-4-credit-Gregor-Fussmann-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2019/08/Gault-Mesocosms-2-credit-Egor-Katkov-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2019/08/Gault-Mesocosms-5-credit-Gregor-Fussmann-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2019/08/Gault-Mesocosms-3-credit-Egor-Katkov-1024x576.jpg']",,,,"['45.543060', ' -73.150762']","{'coordinates': ['45.543060', '-73.150762']}",, +","['http://mesocosm.org/wp-content/uploads/2019/08/Gault-Mesocosms-4-credit-Gregor-Fussmann-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2019/08/Gault-Mesocosms-2-credit-Egor-Katkov-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2019/08/Gault-Mesocosms-5-credit-Gregor-Fussmann-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2019/08/Gault-Mesocosms-3-credit-Egor-Katkov-1024x576.jpg']",,,,"['45.543060', ' -73.150762']","{'coordinates': ['45.543060', '-73.150762']}" https://mesocosm.org/mesocosm/silwood-mesocosm-facility-smf/,Silwood Mesocosm Facility (SMF),Imperial College London,United Kingdom,Europe,"Silwood Park Campus, Imperial College London, Ascot, UK ","Prof. Guy Woodward, Please login or request access to view contact information.;  Dr. Michelle Jackson,Please login or request access to view contact information.m.jackson@imperial.ac.ukPlease login or request access to view contact information.; @@ -2941,7 +2941,7 @@ Dr. Emma Ransome,Please login or request access to view contact information.e.ra -","['http://mesocosm.org/wp-content/uploads/2017/03/SMF-1.png', 'http://mesocosm.org/wp-content/uploads/2017/03/SMF-2.jpg']",,,,"['51.51772460', '-0.17322940']","{'coordinates': ['51.51772460', '-0.17322940']}",, +","['http://mesocosm.org/wp-content/uploads/2017/03/SMF-1.png', 'http://mesocosm.org/wp-content/uploads/2017/03/SMF-2.jpg']",,,,"['51.51772460', '-0.17322940']","{'coordinates': ['51.51772460', '-0.17322940']}" https://mesocosm.org/mesocosm/exstream-system-china/,ExStream System China,Xi'an Jiaotong-Liverpool University,China,Asia,"Xi’an Jiaotong-Liverpool University 111 Ren’ai Road, Suzhou Dushu Lake Science and Education Innovation District Suzhou Industrial Park Suzhou, Jiangsu Province, @@ -2997,7 +2997,7 @@ Figure credit: Jeremy (Jay) Piggott -","['http://mesocosm.org/wp-content/uploads/2018/10/34498B12-BD94-4312-8FFD-C92FA6BA75D4@tcd.ie_-e1540461299359-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/54889AEB-229B-40CC-8773-52FAD7DE72D2@tcd.ie_-e1540461322675-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/F8410BFC-4161-4E95-9D6E-A1CBDECD2109@tcd.ie_-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"['31.276111', ' 120.7325']","{'coordinates': ['31.276111', '120.7325']}",, +","['http://mesocosm.org/wp-content/uploads/2018/10/34498B12-BD94-4312-8FFD-C92FA6BA75D4@tcd.ie_-e1540461299359-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/54889AEB-229B-40CC-8773-52FAD7DE72D2@tcd.ie_-e1540461322675-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/F8410BFC-4161-4E95-9D6E-A1CBDECD2109@tcd.ie_-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"['31.276111', ' 120.7325']","{'coordinates': ['31.276111', '120.7325']}" https://mesocosm.org/mesocosm/exstream-system-china/,ExStream System China,Xi'an Jiaotong-Liverpool University,China,Asia,"Xi’an Jiaotong-Liverpool University 111 Ren’ai Road, Suzhou Dushu Lake Science and Education Innovation District Suzhou Industrial Park Suzhou, Jiangsu Province, @@ -3053,7 +3053,7 @@ Figure credit: Jeremy (Jay) Piggott -","['http://mesocosm.org/wp-content/uploads/2018/10/34498B12-BD94-4312-8FFD-C92FA6BA75D4@tcd.ie_-e1540461299359-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/54889AEB-229B-40CC-8773-52FAD7DE72D2@tcd.ie_-e1540461322675-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/F8410BFC-4161-4E95-9D6E-A1CBDECD2109@tcd.ie_-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"[' 30.118056', ' 118.023889']","{'coordinates': ['30.118056', '118.023889']}",, +","['http://mesocosm.org/wp-content/uploads/2018/10/34498B12-BD94-4312-8FFD-C92FA6BA75D4@tcd.ie_-e1540461299359-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/54889AEB-229B-40CC-8773-52FAD7DE72D2@tcd.ie_-e1540461322675-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/F8410BFC-4161-4E95-9D6E-A1CBDECD2109@tcd.ie_-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"[' 30.118056', ' 118.023889']","{'coordinates': ['30.118056', '118.023889']}" https://mesocosm.org/mesocosm/exstream-system-ireland/,ExStream System Ireland,University College Dublin in collaboration with Trinity College Dublin,Ireland,Europe,"Belfield, Dublin 4 ","Assoc. Prof. Mary Kelly-Quinn ExStream network coordinator Asst. Prof. Jeremy J. Piggott @@ -3099,7 +3099,7 @@ Figure credit: Jeremy (Jay) Piggott   -","['http://mesocosm.org/wp-content/uploads/2018/05/IMG_1176-683x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/DJI_0011-1024x575.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"['53.307444', ' -6.227611']","{'coordinates': ['53.307444', '-6.227611']}",, +","['http://mesocosm.org/wp-content/uploads/2018/05/IMG_1176-683x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/DJI_0011-1024x575.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"['53.307444', ' -6.227611']","{'coordinates': ['53.307444', '-6.227611']}" https://mesocosm.org/mesocosm/lunz-mesocosm-infrastructure-lmi/,Lunz Mesocosm Infrastructure (LMI),WCL - WasserCluster Lunz,Austria,Europe,"1) WCL – WasserCluster Lunz Dr. Carl Kupelwieser Promenade 5 A-3293 Lunz am See @@ -3180,7 +3180,7 @@ https://mesocosm.org/mesocosm/lunz-mesocosm-infrastructure-lmi/,Lunz Mesocosm In -","['http://mesocosm.org/wp-content/uploads/2017/02/Ptacnik-Lunz_400-300x226.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Kainz_mesocosms_400-300x224.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/HyTEC_1_400px-300x300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/HyTEC_2_400px-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/HyTEC_3_400px-296x300.jpg']",,,,"['47.8598408', '15.030520']","{'coordinates': ['47.8598408', '15.030520']}",, +","['http://mesocosm.org/wp-content/uploads/2017/02/Ptacnik-Lunz_400-300x226.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Kainz_mesocosms_400-300x224.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/HyTEC_1_400px-300x300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/HyTEC_2_400px-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/HyTEC_3_400px-296x300.jpg']",,,,"['47.8598408', '15.030520']","{'coordinates': ['47.8598408', '15.030520']}" https://mesocosm.org/mesocosm/shear-turbulence-resuspension-mesocosm-sturm-facility/,Shear TUrbulence Resuspension Mesocosm (STURM) facility,The University of Baltimore (UBalt),United States of America,North America,"UBalt STURM facility located at: Patuxent Environmental and Aquatic Research Laboratory (PEARL), Morgan State University, @@ -3217,7 +3217,7 @@ turbidity monitoring temperature monitoring ","No lodging -",,,,,,,"['38.39364902663247', '-76.50512446172259']","{'coordinates': ['38.39364902663247', '-76.50512446172259']}",, +",,,,,,,"['38.39364902663247', '-76.50512446172259']","{'coordinates': ['38.39364902663247', '-76.50512446172259']}" https://mesocosm.org/mesocosm/the-river-laboratory-heated-pond-mesocosms/,The River Laboratory heated pond mesocosms,Queen Mary University of London,United Kingdom,Europe,"QMUL Mile End Road London E1 4NS @@ -3272,7 +3272,7 @@ Foto credit: Yizhu Zhu -","['http://mesocosm.org/wp-content/uploads/2018/11/Ponds-1-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/Ponds-2-e1542903074614-768x1024.jpg']",,,,"['50.6666667', ' -2.1666666666666665']","{'coordinates': ['50.6666667', '-2.1666666666666665']}",, +","['http://mesocosm.org/wp-content/uploads/2018/11/Ponds-1-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/Ponds-2-e1542903074614-768x1024.jpg']",,,,"['50.6666667', ' -2.1666666666666665']","{'coordinates': ['50.6666667', '-2.1666666666666665']}" https://mesocosm.org/mesocosm/exstream-system-germany/,ExStream System Germany,"University of Duisburg-Essen, Aquatic Ecosystem Research",Germany,Europe,"University of Duisburg-Essen, Aquatic Ecosystem Research Universitaetsstrasse 5 D-45141 Essen @@ -3330,7 +3330,7 @@ Figure credti: Jeremy (Jay) Piggott   -","['http://mesocosm.org/wp-content/uploads/2018/05/Beerman-et-al-2017-SOTEN-1024x892.png', 'http://mesocosm.org/wp-content/uploads/2018/05/Breitenbach1.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Felderbach2-452x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"['51.349722', ' 7.170583']","{'coordinates': ['51.349722', '7.170583']}",, +","['http://mesocosm.org/wp-content/uploads/2018/05/Beerman-et-al-2017-SOTEN-1024x892.png', 'http://mesocosm.org/wp-content/uploads/2018/05/Breitenbach1.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Felderbach2-452x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"['51.349722', ' 7.170583']","{'coordinates': ['51.349722', '7.170583']}" https://mesocosm.org/mesocosm/albufera-biological-station/,Albufera Biological Station,University of Valencia,Spain,Europe,"Catedrático José Beltrán 2, 46980 Paterna (Spain) @@ -3378,7 +3378,7 @@ photo credits: Pablo Amador   photo credits: Pablo Amador   -","['http://mesocosm.org/wp-content/uploads/2023/12/Andreu-Rico-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/Andreu-Rico-768x1024.jpeg', 'http://mesocosm.org/wp-content/uploads/2023/12/Pablo-Amador-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/Pablo-Amador-2-768x1024.jpg']",,,,"['39.315582', ' -0.318789']","{'coordinates': ['39.315582', '-0.318789']}",, +","['http://mesocosm.org/wp-content/uploads/2023/12/Andreu-Rico-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/Andreu-Rico-768x1024.jpeg', 'http://mesocosm.org/wp-content/uploads/2023/12/Pablo-Amador-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/Pablo-Amador-2-768x1024.jpg']",,,,"['39.315582', ' -0.318789']","{'coordinates': ['39.315582', '-0.318789']}" https://mesocosm.org/mesocosm/mobicos-mobile-aquatic-mesocosm/,MOBICOS - Mobile Aquatic Mesocosm,Helmholtz Zentrum für Umweltforschung-UFZ,Germany,Europe,"Helmholtz Zentrum für Umweltforschung-UFZ Brückstr. 3a 39114 Magdeburg @@ -3415,7 +3415,7 @@ In the MOBICOS-container scientists can experimentally comparare the growth of m -","['http://mesocosm.org/wp-content/uploads/2017/05/Mobicos_container500px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Muschelaquarien_200px.jpg']",,,,"['52.1205333', '11.627623699999958']","{'coordinates': ['52.1205333', '11.627623699999958']}",, +","['http://mesocosm.org/wp-content/uploads/2017/05/Mobicos_container500px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Muschelaquarien_200px.jpg']",,,,"['52.1205333', '11.627623699999958']","{'coordinates': ['52.1205333', '11.627623699999958']}" https://mesocosm.org/mesocosm/igb-lakelab/,IGB LakeLab,Leibniz-Institute for Freshwater Ecology and Inland Fisheries (IGB),Germany,Europe,"Leibniz-Institute for Freshwater Ecology and Inland Fisheries (IGB) Müggelseedamm 310 12587 Berlin @@ -3445,7 +3445,7 @@ a height-adjustable water recirculation system with a perforated ring, rising c ","http://www.lake-lab.de http://www.seelabor.de/ ","Schematic diagram of the LakeLab in Lake Stechlin, northeastern Germany Aerial photograph of the LakeLab in Lake Stechlin Photo credit: HTW Dresden-Oczipka Photo credit: P. Casper, IGB -","['http://mesocosm.org/wp-content/uploads/2017/02/Stechlin_DE_graphics_400px-300x272.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Areal_photo_©HTWDresden-Oczipka_400px-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/lakelab_map-300x111.jpg']",,,,"['53.1520282', '13.0233035']","{'coordinates': ['53.1520282', '13.0233035']}",, +","['http://mesocosm.org/wp-content/uploads/2017/02/Stechlin_DE_graphics_400px-300x272.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Areal_photo_©HTWDresden-Oczipka_400px-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/lakelab_map-300x111.jpg']",,,,"['53.1520282', '13.0233035']","{'coordinates': ['53.1520282', '13.0233035']}" https://mesocosm.org/mesocosm/center-for-coastal-environmental-health-and-biomolecular-research-ccehbr/,Center for Coastal Environmental Health and Biomolecular Research-CCEHBR,National Oceanic and Atmospheric Administration Center - NOAA,USA,North-America,"National Oceanic and Atmospheric Administration Center – NOAA ","Dr. Mike Fulton Please login or request access to view contact information. @@ -3479,7 +3479,7 @@ Mesocosm installation -","['http://mesocosm.org/wp-content/uploads/2017/05/Cherleston_meso3.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Charleston-mesocosms.jpg']",,,,"['32.7524467', '-79.8986098']","{'coordinates': ['32.7524467', '-79.8986098']}",, +","['http://mesocosm.org/wp-content/uploads/2017/05/Cherleston_meso3.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Charleston-mesocosms.jpg']",,,,"['32.7524467', '-79.8986098']","{'coordinates': ['32.7524467', '-79.8986098']}" https://mesocosm.org/mesocosm/archipelago-benthic-mesocosm-network/,Archipelago Benthic Mesocosm Network,Åbo Akademi University,Finland,Europe,"Henrikinkatu 2, 20500 Åbo/Turku, Finland @@ -3530,7 +3530,7 @@ programmable climate simulation (GHL) ","https://www.abo.fi/en/emb-research-infrastructure/mesocosms/ https://pansch-research.com/?page_id=1592 ","Korpoström mesocosm tanks are equipped with constant flow and circulation of seawater from the adjacent bay. Electrical cabinets currently provide the possibility for monitoring and manipulation of seawater temperature. Seagrass shoots (upper left panel) are planted into separate sediment trays, photo credits: Christian Pansch Hattich Korpoström mesocosm system located at the Skärgårdscentrum Korpoström, Finland. 20 600L tanks receive seawater from the adjacent bay, photo credits: Christian Pansch-Hattich Husö mesocosm system located at Husö Biological Station, Åland, Finland. Seawater temperature monitoring and manipulation is achieved through Aqua Medic and GHL controlling units, as well as Aqua Medic cooling and Schego heading devices. photo credits: Christian Pansch-Hattich Husö mesocosm system located at Husö Biological Station, Åland, Finland. 20 600L tanks receive a flow-through of seawater from the adjacent bay. Christian Pansch-Hattich -","['http://mesocosm.org/wp-content/uploads/2024/07/3_small-1024x530.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/2_small-1024x567.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/5_small-1024x565.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/4_small-1024x560.jpg']",,,,"['60.1102778', '21.598055555555554']","{'coordinates': ['60.1102778', '21.598055555555554']}",, +","['http://mesocosm.org/wp-content/uploads/2024/07/3_small-1024x530.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/2_small-1024x567.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/5_small-1024x565.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/4_small-1024x560.jpg']",,,,"['60.1102778', '21.598055555555554']","{'coordinates': ['60.1102778', '21.598055555555554']}" https://mesocosm.org/mesocosm/archipelago-benthic-mesocosm-network/,Archipelago Benthic Mesocosm Network,Åbo Akademi University,Finland,Europe,"Henrikinkatu 2, 20500 Åbo/Turku, Finland @@ -3581,7 +3581,7 @@ programmable climate simulation (GHL) ","https://www.abo.fi/en/emb-research-infrastructure/mesocosms/ https://pansch-research.com/?page_id=1592 ","Korpoström mesocosm tanks are equipped with constant flow and circulation of seawater from the adjacent bay. Electrical cabinets currently provide the possibility for monitoring and manipulation of seawater temperature. Seagrass shoots (upper left panel) are planted into separate sediment trays, photo credits: Christian Pansch Hattich Korpoström mesocosm system located at the Skärgårdscentrum Korpoström, Finland. 20 600L tanks receive seawater from the adjacent bay, photo credits: Christian Pansch-Hattich Husö mesocosm system located at Husö Biological Station, Åland, Finland. Seawater temperature monitoring and manipulation is achieved through Aqua Medic and GHL controlling units, as well as Aqua Medic cooling and Schego heading devices. photo credits: Christian Pansch-Hattich Husö mesocosm system located at Husö Biological Station, Åland, Finland. 20 600L tanks receive a flow-through of seawater from the adjacent bay. Christian Pansch-Hattich -","['http://mesocosm.org/wp-content/uploads/2024/07/3_small-1024x530.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/2_small-1024x567.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/5_small-1024x565.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/4_small-1024x560.jpg']",,,,"['60.2794444', '19.83138888888889']","{'coordinates': ['60.2794444', '19.83138888888889']}",, +","['http://mesocosm.org/wp-content/uploads/2024/07/3_small-1024x530.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/2_small-1024x567.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/5_small-1024x565.jpg', 'http://mesocosm.org/wp-content/uploads/2024/07/4_small-1024x560.jpg']",,,,"['60.2794444', '19.83138888888889']","{'coordinates': ['60.2794444', '19.83138888888889']}" https://mesocosm.org/mesocosm/syke-mrc-marine-research-centre-mesocosm-facility/,SYKE-MRC (Marine Research Centre) Mesocosm Facility,Marine Research Centre,Finland,Europe,"Marine Research Centre (MRC) Finnish Environment Institute SYKE P.O.Box 140 @@ -3620,7 +3620,7 @@ SYKE-MRC field mesocosm work at Tvärminne -","['http://mesocosm.org/wp-content/uploads/2017/02/plankton-tower-153x300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['60.203843', '24.9617237']","{'coordinates': ['60.203843', '24.9617237']}",, +","['http://mesocosm.org/wp-content/uploads/2017/02/plankton-tower-153x300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['60.203843', '24.9617237']","{'coordinates': ['60.203843', '24.9617237']}" https://mesocosm.org/mesocosm/uib-mesocosm-centre-university-of-bergen-mesocosm-centre/,UiB Mesocosm Centre (University of Bergen Mesocosm Centre),University of Bergen (UiB),Norway,Europe,"University of Bergen (UiB) Department of Biology PO-Box 7803 @@ -3666,7 +3666,7 @@ Fig.2 Land-based mesocosms (Photo: Stella A Berger) Nutrient composition, add/remove mesozooplankton, CO2/pH Land based tanks Nutrient composition, add/remove mesozooplankton CO2/pH, salinity, adjust light and temperature -","['60.2695262', '5.2234965']","{'coordinates': ['60.2695262', '5.2234965']}",, +","['60.2695262', '5.2234965']","{'coordinates': ['60.2695262', '5.2234965']}" https://mesocosm.org/mesocosm/marine-ecosystems-research-laboratory-merl/,Marine Ecosystems Research Laboratory - MERL,University of Rhode Island,USA,North-America,"University of Rhode Island ","Prof. Candace Oviatt Please login or request access to view contact information. @@ -3712,7 +3712,7 @@ Schema of the MERL construction -","['http://mesocosm.org/wp-content/uploads/2017/05/merl_300.gif', 'http://mesocosm.org/wp-content/uploads/2017/05/Narragansett-US-RIMERL-deck_400.gif', 'http://mesocosm.org/wp-content/uploads/2017/05/Narragansett-US-RImerltankpic5_400.jpg']",,,,"['41.49175', '-71.4207629']","{'coordinates': ['41.49175', '-71.4207629']}",, +","['http://mesocosm.org/wp-content/uploads/2017/05/merl_300.gif', 'http://mesocosm.org/wp-content/uploads/2017/05/Narragansett-US-RIMERL-deck_400.gif', 'http://mesocosm.org/wp-content/uploads/2017/05/Narragansett-US-RImerltankpic5_400.jpg']",,,,"['41.49175', '-71.4207629']","{'coordinates': ['41.49175', '-71.4207629']}" https://mesocosm.org/mesocosm/artificial-stream-and-pond-system-fsa/,Artificial Stream and Pond System (FSA),German Environment Agency,Germany,Europe,"German Environment Agency ","Ralf Schmidt Please login or request access to view contact information. @@ -3754,7 +3754,7 @@ Outdoor streams © Umweltbundesamt -","['http://mesocosm.org/wp-content/uploads/2017/02/Berlin_Marienfelde_aussen.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Berlin-Marienfelde_aussenan-300x185.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Berlin_Marienfelde_rinne_aus.jpg']",,,,"['52.4107352', '13.3756523']","{'coordinates': ['52.4107352', '13.3756523']}",, +","['http://mesocosm.org/wp-content/uploads/2017/02/Berlin_Marienfelde_aussen.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Berlin-Marienfelde_aussenan-300x185.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/Berlin_Marienfelde_rinne_aus.jpg']",,,,"['52.4107352', '13.3756523']","{'coordinates': ['52.4107352', '13.3756523']}" https://mesocosm.org/mesocosm/the-river-laboratory-experimental-stream-channel-mesocosms/,The River Laboratory experimental stream channel mesocosms,Queen Mary University of London,United Kingdom,Europe,"QMUL Mile End Road London E1 4NS @@ -3819,7 +3819,7 @@ Foto credit: Iwan Jones   -","['http://mesocosm.org/wp-content/uploads/2018/11/Streams-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/Streams-4-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/Streams-1-1024x768.jpg']",,,,"['50.6666667', ' -2.1833330555555555']","{'coordinates': ['50.6666667', '-2.1833330555555555']}",, +","['http://mesocosm.org/wp-content/uploads/2018/11/Streams-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/Streams-4-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/Streams-1-1024x768.jpg']",,,,"['50.6666667', ' -2.1833330555555555']","{'coordinates': ['50.6666667', '-2.1833330555555555']}" https://mesocosm.org/mesocosm/au-lake-mesocosm-warming-experiment-lmwe/,AU Lake Mesocosm Warming Experiment (LMWE),Aarhus University (AU),Denmark,Europe,"Aarhus University (AU) Nordre Ringgade 1 8000 Aarhus C @@ -3853,7 +3853,7 @@ Mesocosm tanks in Silkeborg, DK -","['http://mesocosm.org/wp-content/uploads/2017/02/silkeborg_mesocosm_schema-300x210.png', 'http://mesocosm.org/wp-content/uploads/2017/02/silkeborg_mesocosm-300x223.png']",,,,"['56.244846', '9.529916']","{'coordinates': ['56.244846', '9.529916']}",, +","['http://mesocosm.org/wp-content/uploads/2017/02/silkeborg_mesocosm_schema-300x210.png', 'http://mesocosm.org/wp-content/uploads/2017/02/silkeborg_mesocosm-300x223.png']",,,,"['56.244846', '9.529916']","{'coordinates': ['56.244846', '9.529916']}" https://mesocosm.org/mesocosm/awri-mesocosm-facility/,AWRI mesocosm facility,"Annis Water Resources Institute, Grand Valley State University",USA,North America,"740 West Shoreline Drive Muskegon, Michigan 49441 @@ -3908,7 +3908,7 @@ Photo credits: AWRI GVSU -","['http://mesocosm.org/wp-content/uploads/2022/09/Full_field-station_2.1-683x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2022/09/mesocosm.1-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2022/09/P3080003.jpg']",,,,"['43.224194', '-86.235809']","{'coordinates': ['43.224194', '-86.235809']}",, +","['http://mesocosm.org/wp-content/uploads/2022/09/Full_field-station_2.1-683x1024.jpg', 'http://mesocosm.org/wp-content/uploads/2022/09/mesocosm.1-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2022/09/P3080003.jpg']",,,,"['43.224194', '-86.235809']","{'coordinates': ['43.224194', '-86.235809']}" https://mesocosm.org/mesocosm/gropello-21026-gaviratevarese/,"Gropello, 21026 Gavirate/Varese",Institut Dr. Nowak (a),Italy,Europe,"Institut Dr. Nowak (a) Abteilung Limnologie Mayenbrook 1 @@ -3965,7 +3965,7 @@ Location of Lago di Varese: Latitude 45.818369; Longitude 8.738972 -","['http://mesocosm.org/wp-content/uploads/2017/05/Lago_di_Varese_1_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lago_di_Varese_2_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lago_di_Varese_construction_300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/LagodiVarese_300.png']",,,,"['45.799026', '8.7300945']","{'coordinates': ['45.799026', '8.7300945']}",, +","['http://mesocosm.org/wp-content/uploads/2017/05/Lago_di_Varese_1_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lago_di_Varese_2_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Lago_di_Varese_construction_300.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/LagodiVarese_300.png']",,,,"['45.799026', '8.7300945']","{'coordinates': ['45.799026', '8.7300945']}" https://mesocosm.org/mesocosm/exstream-system-new-zealand/,ExStream System New Zealand,"University of Otago, Department of Zoology",New Zealand,Australasia,"340 Great King St Dunedin 9054 New Zealand @@ -4029,7 +4029,7 @@ Figure credit: Jeremy (Jay) Piggott ​   -","['http://mesocosm.org/wp-content/uploads/2018/10/Piggott-et-al.-2015-Global-Change-Biology-21-206-222.-959x1024.png', 'http://mesocosm.org/wp-content/uploads/2018/10/Kauru-ExStream-Under-the-Rainbow-1024x589.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/ExStream-mesocosms-960x1024.png', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"['-45.06337', ' 170.44303']","{'coordinates': ['-45.06337', '170.44303']}",, +","['http://mesocosm.org/wp-content/uploads/2018/10/Piggott-et-al.-2015-Global-Change-Biology-21-206-222.-959x1024.png', 'http://mesocosm.org/wp-content/uploads/2018/10/Kauru-ExStream-Under-the-Rainbow-1024x589.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/ExStream-mesocosms-960x1024.png', 'http://mesocosm.org/wp-content/uploads/2018/05/ExStream-network-collaborators-1024x546.jpeg']",,,,"['-45.06337', ' 170.44303']","{'coordinates': ['-45.06337', '170.44303']}" https://mesocosm.org/mesocosm/mesocosms-experimental-garden-radboud-university/,Mesocosms – experimental garden Radboud University,Radboud University,Netherlands,Europe,"Comeniuslaan 4, 6525 HP Nijmegen "," Sarian Kosten Please login or request access to view contact information. @@ -4069,7 +4069,7 @@ Photo credit: Sarian Kosten -","['http://mesocosm.org/wp-content/uploads/2019/03/Radboud_mesocosm1-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Radboud_mesocosm2-300x169.jpg']",,,,"['51.822777', '5.8733333']","{'coordinates': ['51.822777', '5.8733333']}",, +","['http://mesocosm.org/wp-content/uploads/2019/03/Radboud_mesocosm1-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Radboud_mesocosm2-300x169.jpg']",,,,"['51.822777', '5.8733333']","{'coordinates': ['51.822777', '5.8733333']}" https://mesocosm.org/mesocosm/hungarian-pond-network/,Hungarian Pond Network,Centre for Ecological Research,Hungary,Europe,"Centre for Ecological Research H-1113 Budapest, Karolina út 29. Hungary @@ -4103,7 +4103,7 @@ A mesocosm at the Fülöpháza HPN facility. (Photo credit: Csaba Vad) The Vácrátót HPN mesocosm facility during winter. (Photo credit: Csilla Laskai) A mesocosm at the Zánka facility. (Phto credit: Csilla Laskai)   -","['http://mesocosm.org/wp-content/uploads/2024/01/Photo-1.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-2-1024x461.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/photo-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-4-1024x768.jpg']",,,,"['47.705277833333334', '19.228137999999998']","{'coordinates': ['47.705277833333334', '19.228137999999998']}",, +","['http://mesocosm.org/wp-content/uploads/2024/01/Photo-1.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-2-1024x461.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/photo-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-4-1024x768.jpg']",,,,"['47.705277833333334', '19.228137999999998']","{'coordinates': ['47.705277833333334', '19.228137999999998']}" https://mesocosm.org/mesocosm/hungarian-pond-network/,Hungarian Pond Network,Centre for Ecological Research,Hungary,Europe,"Centre for Ecological Research H-1113 Budapest, Karolina út 29. Hungary @@ -4137,7 +4137,7 @@ A mesocosm at the Fülöpháza HPN facility. (Photo credit: Csaba Vad) The Vácrátót HPN mesocosm facility during winter. (Photo credit: Csilla Laskai) A mesocosm at the Zánka facility. (Phto credit: Csilla Laskai)   -","['http://mesocosm.org/wp-content/uploads/2024/01/Photo-1.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-2-1024x461.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/photo-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-4-1024x768.jpg']",,,,"['46.870555555555555', '19.422222222222224']","{'coordinates': ['46.870555555555555', '19.422222222222224']}",, +","['http://mesocosm.org/wp-content/uploads/2024/01/Photo-1.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-2-1024x461.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/photo-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-4-1024x768.jpg']",,,,"['46.870555555555555', '19.422222222222224']","{'coordinates': ['46.870555555555555', '19.422222222222224']}" https://mesocosm.org/mesocosm/hungarian-pond-network/,Hungarian Pond Network,Centre for Ecological Research,Hungary,Europe,"Centre for Ecological Research H-1113 Budapest, Karolina út 29. Hungary @@ -4171,7 +4171,7 @@ A mesocosm at the Fülöpháza HPN facility. (Photo credit: Csaba Vad) The Vácrátót HPN mesocosm facility during winter. (Photo credit: Csilla Laskai) A mesocosm at the Zánka facility. (Phto credit: Csilla Laskai)   -","['http://mesocosm.org/wp-content/uploads/2024/01/Photo-1.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-2-1024x461.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/photo-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-4-1024x768.jpg']",,,,"['46.88', '17.66861111111111']","{'coordinates': ['46.88', '17.66861111111111']}",, +","['http://mesocosm.org/wp-content/uploads/2024/01/Photo-1.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-2-1024x461.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/photo-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-4-1024x768.jpg']",,,,"['46.88', '17.66861111111111']","{'coordinates': ['46.88', '17.66861111111111']}" https://mesocosm.org/mesocosm/hungarian-pond-network/,Hungarian Pond Network,Centre for Ecological Research,Hungary,Europe,"Centre for Ecological Research H-1113 Budapest, Karolina út 29. Hungary @@ -4205,7 +4205,7 @@ A mesocosm at the Fülöpháza HPN facility. (Photo credit: Csaba Vad) The Vácrátót HPN mesocosm facility during winter. (Photo credit: Csilla Laskai) A mesocosm at the Zánka facility. (Phto credit: Csilla Laskai)   -","['http://mesocosm.org/wp-content/uploads/2024/01/Photo-1.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-2-1024x461.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/photo-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-4-1024x768.jpg']",,,,"['47.603611111111114', '21.3575']","{'coordinates': ['47.603611111111114', '21.3575']}",, +","['http://mesocosm.org/wp-content/uploads/2024/01/Photo-1.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-2-1024x461.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/photo-3-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2024/01/Photo-4-1024x768.jpg']",,,,"['47.603611111111114', '21.3575']","{'coordinates': ['47.603611111111114', '21.3575']}" https://mesocosm.org/mesocosm/marine-plant-mesocosm-system/,Marine Plant Mesocosm System,CCMAR – Centre of Marine Sciences,Portugal,Europe,"Universidade do Algarve Campus de Gambelas, Ed.7 8005-139 Faro @@ -4253,7 +4253,7 @@ Photo credit: João Silva -","['http://mesocosm.org/wp-content/uploads/2018/05/CCMAR_mesocosm_2-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/CCMAR_mesocosm_1-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/CCMAR_mesocosm_3.jpg']",,,,"['37.006', ' -7.966']","{'coordinates': ['37.006', '-7.966']}",, +","['http://mesocosm.org/wp-content/uploads/2018/05/CCMAR_mesocosm_2-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/CCMAR_mesocosm_1-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/CCMAR_mesocosm_3.jpg']",,,,"['37.006', ' -7.966']","{'coordinates': ['37.006', '-7.966']}" https://mesocosm.org/mesocosm/exstream-brazil/,ExStream Brazil,Universidade Federal do ABC (Federal University of ABC),Brazil,South America,"Av. dos Estados, 5001, B. Santa Terezinha, Santo André, SP, Brazil. CEP 09210-580 ","Adjunct Professor Ricardo Hideo Taniwaki Please login or request access to view contact information. @@ -4276,7 +4276,7 @@ The Experimental Stream mesocosm network (ExStream) comprises replicate installa >15 publications in scientific journals by C.D. Matthaei, J. J Piggott and coauthors (https://www.otago.ac.nz/zoology/staff/matthaei.html) Blog post: https://jappliedecologyblog.wordpress.com/2015/07/03/exstream-study-assesses-stream-ecosystem-functioning-the-effects-of-climate-warming-multiple-agricultural-stressors/ Short video about ExStream System research: https://vimeo.com/243219546 -",,,,,,"['-23.060634', ' -48.630102']","{'coordinates': ['-23.060634', '-48.630102']}",, +",,,,,,"['-23.060634', ' -48.630102']","{'coordinates': ['-23.060634', '-48.630102']}" https://mesocosm.org/mesocosm/mesocosm-facility-at-umea-marine-sciences-center-mf-umsc/,Mesocosm Facility at Umeå Marine Sciences Center (MF-UMSC),Umeå Universitet (UmU),Sweden,Europe,"Umeå University (UmU)SE-90187 Umeå SWEDEN http://www.umf.umu.se/english/?languageId=1 @@ -4357,7 +4357,7 @@ MF-UMSC outdoor; Photo: K. Viklund   -","['http://mesocosm.org/wp-content/uploads/2017/03/Indoor-polyethylen-mesocosms.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/Tanks-with-light-and-temperature-control.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/ice-tanks_1-300x199.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/DSC_1798-300x199.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/DSC_1801-300x199.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/INDOOR-300x199.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/OUTDOOR-300x199.jpg']",,,,"['63.5678349', '19.8206221']","{'coordinates': ['63.5678349', '19.8206221']}",, +","['http://mesocosm.org/wp-content/uploads/2017/03/Indoor-polyethylen-mesocosms.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/Tanks-with-light-and-temperature-control.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/ice-tanks_1-300x199.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/DSC_1798-300x199.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/DSC_1801-300x199.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/INDOOR-300x199.jpg', 'http://mesocosm.org/wp-content/uploads/2017/02/OUTDOOR-300x199.jpg']",,,,"['63.5678349', '19.8206221']","{'coordinates': ['63.5678349', '19.8206221']}" https://mesocosm.org/mesocosm/alpstream-eco-hydraulic-flumes/,ALPSTREAM ECO-HYDRAULIC FLUMES,ALPSTREAM – Alpine Stream Research Center/MONVISO PARK,Italy,Europe,"Frazione S. Antonio 17, I-12030 Sant’Antonio Ostana (CN)   @@ -4428,7 +4428,7 @@ from window of the ALPSTREAM lab, photo credits: Elisa Falasco Guesthouse, photo credits: VisoaViso cooperative Indoor space of the ALPSTREAM lab, photo credit: Stefano Fenoglio Ostana landscape, photo credits: Stefano Fenoglio -","['http://mesocosm.org/wp-content/uploads/2023/03/Flumes-1024x413.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/aerial-view-flumes-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/from-the-window-of-the-ALPSTREAM-lab.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/guesthouse.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/indoor-space-of-the-ALPSTREAM-lab.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/Ostana-landscape.1.9MB-1024x768.jpg']",,,,"['44.6931944', ' 7.176777777777778']","{'coordinates': ['44.6931944', '7.176777777777778']}",, +","['http://mesocosm.org/wp-content/uploads/2023/03/Flumes-1024x413.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/aerial-view-flumes-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/from-the-window-of-the-ALPSTREAM-lab.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/guesthouse.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/indoor-space-of-the-ALPSTREAM-lab.jpg', 'http://mesocosm.org/wp-content/uploads/2023/03/Ostana-landscape.1.9MB-1024x768.jpg']",,,,"['44.6931944', ' 7.176777777777778']","{'coordinates': ['44.6931944', '7.176777777777778']}" https://mesocosm.org/mesocosm/yeosu-mesocosm-system/,Yeosu Mesocosm System,"Fisheries Science Institute, Chonnam National University",Republic of Korea,Asia,"50 Daehak-ro, Yeosu, Jeonnam 59626, Republic of Korea ","Prof. Ihn-Sil Kwak / Dr. Hyunbin Jo Please login or request access to view contact information. @@ -4465,7 +4465,7 @@ Reconstruction plan -","['http://mesocosm.org/wp-content/uploads/2019/03/Yeosu-Mesocosm-System-1-300x226.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Yeosu-Mesocosm-System-2-300x227.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Yeosu-Mesocosm-System-3-255x300.jpeg']",,,,"['34.627472', '127.72033']","{'coordinates': ['34.627472', '127.72033']}",, +","['http://mesocosm.org/wp-content/uploads/2019/03/Yeosu-Mesocosm-System-1-300x226.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Yeosu-Mesocosm-System-2-300x227.jpeg', 'http://mesocosm.org/wp-content/uploads/2019/03/Yeosu-Mesocosm-System-3-255x300.jpeg']",,,,"['34.627472', '127.72033']","{'coordinates': ['34.627472', '127.72033']}" https://mesocosm.org/mesocosm/levend-lab/,Levend Lab,Leiden University,Netherlands,Europe,"Leiden University Institute of Environmental Sciences PO Box 9518 @@ -4523,7 +4523,7 @@ Photo credit: -","['http://mesocosm.org/wp-content/uploads/2018/10/1-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/2-1024x768.jpg']",,,,"['52.170726', ' 4.451855']","{'coordinates': ['52.170726', '4.451855']}",, +","['http://mesocosm.org/wp-content/uploads/2018/10/1-1024x576.jpg', 'http://mesocosm.org/wp-content/uploads/2018/10/2-1024x768.jpg']",,,,"['52.170726', ' 4.451855']","{'coordinates': ['52.170726', '4.451855']}" https://mesocosm.org/mesocosm/lake-baoan-field-station-of-experimental-limnological-research/,Lake Bao’an Field Station of Experimental Limnological Research,"State Key Laboratory of Freshwater Ecology and Biotechnology, Institute of Hydrobiology, Chinese Academy of Sciences",China,Asia,"No. 7 South Donghu Road,  Wuchang District, Wuhan 430072, Hubei Province, China ","Hai-Jun Wang Please login or request access to view contact information. @@ -4576,7 +4576,7 @@ Ponds for nitrogen pollution experiments -","['http://mesocosm.org/wp-content/uploads/2019/03/The-aerial-view-of-the-experimental-station-300x169.png', 'http://mesocosm.org/wp-content/uploads/2019/03/cement-aquarium-experimental-system-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Ponds-for-eutrophication-experiments-300x177.png', 'http://mesocosm.org/wp-content/uploads/2019/03/Ponds-for-nitrogen-pollution-experiments-300x189.png']",,,,"['30.28805', '114.72916']","{'coordinates': ['30.28805', '114.72916']}",, +","['http://mesocosm.org/wp-content/uploads/2019/03/The-aerial-view-of-the-experimental-station-300x169.png', 'http://mesocosm.org/wp-content/uploads/2019/03/cement-aquarium-experimental-system-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Ponds-for-eutrophication-experiments-300x177.png', 'http://mesocosm.org/wp-content/uploads/2019/03/Ponds-for-nitrogen-pollution-experiments-300x189.png']",,,,"['30.28805', '114.72916']","{'coordinates': ['30.28805', '114.72916']}" https://mesocosm.org/mesocosm/tihany-outdoor-mesocosm-hungary/,Tihany Outdoor Mesocosm (Hungary),"Balaton Limnological Research Institute, Eötvös Loránd Research Network",Hungary,Europe,"Klebelsberg Kuno 3, 8237-Tihany, Hungary @@ -4637,7 +4637,7 @@ Foto credit: Ferenc Jordan ​   -","['http://mesocosm.org/wp-content/uploads/2018/11/Tihany-5-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/IMG_20181024_094852-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/IMG_20181024_104918-1024x768.jpg']",,,,"['46.9125', ' 17.893333333333334']","{'coordinates': ['46.9125', '17.893333333333334']}",, +","['http://mesocosm.org/wp-content/uploads/2018/11/Tihany-5-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/IMG_20181024_094852-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/11/IMG_20181024_104918-1024x768.jpg']",,,,"['46.9125', ' 17.893333333333334']","{'coordinates': ['46.9125', '17.893333333333334']}" https://mesocosm.org/mesocosm/sites-aquanet-svartberget-research-station/,SITES AquaNet – Svartberget Research Station,SITES and Swedish University of Agricultural Sciences,Sweden,Europe,"Sveriges lantbruksuniversitet (SLU) Unit for Field-based Forest Research Svartberget Research Station @@ -4679,7 +4679,7 @@ Photo credti: Peder Blomkvist   -","['http://mesocosm.org/wp-content/uploads/2018/05/Svartberget_2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Svartberget_3-768x1024.jpg']",,,,"['64.143965', ' 19.455836']","{'coordinates': ['64.143965', '19.455836']}",, +","['http://mesocosm.org/wp-content/uploads/2018/05/Svartberget_2-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/Svartberget_3-768x1024.jpg']",,,,"['64.143965', ' 19.455836']","{'coordinates': ['64.143965', '19.455836']}" https://mesocosm.org/mesocosm/cambridge-environmental-assessments-cea/,Cambridge Environmental Assessments (CEA),RSK ADAS Ltd,United Kingdom,Europe,"Cambridge Environmental Assessments, ADAS Boxworth, Cambridgeshire, CB23 4NN ","Dr Nadine Taylor Please login or request access to view contact information. @@ -4744,7 +4744,7 @@ Set-up of sloped mesocosms prior to a study (Credit: Cambridge Environmental Ass -","['http://mesocosm.org/wp-content/uploads/2019/03/Established-flat-bottomed-mesocosms-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Established-sloped-mesocosms-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Established-sloped-mesocosms-2-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Set-up-of-sloped-mesocosms-prior-to-a-study-300x225.jpg']",,,,"['52.252916', '-0.031916']","{'coordinates': ['52.252916', '-0.031916']}",, +","['http://mesocosm.org/wp-content/uploads/2019/03/Established-flat-bottomed-mesocosms-300x225.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Established-sloped-mesocosms-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Established-sloped-mesocosms-2-300x200.jpg', 'http://mesocosm.org/wp-content/uploads/2019/03/Set-up-of-sloped-mesocosms-prior-to-a-study-300x225.jpg']",,,,"['52.252916', '-0.031916']","{'coordinates': ['52.252916', '-0.031916']}" https://mesocosm.org/mesocosm/carl-von-ossietzky-university-oldenburg/,Planktotrons - Indoor Mesocosm Facility,Carl-von-Ossietzky University Oldenburg,Germany,Europe,"Carl-von-Ossietzky University Oldenburg Institute for Chemistry and Biology of the Marine Environment (ICBM) Schleusenstr. 1 @@ -4788,7 +4788,7 @@ Plankrtotrons in Wilhelmshaven -","['http://mesocosm.org/wp-content/uploads/2017/05/planktotrons_1_400.png', 'http://mesocosm.org/wp-content/uploads/2017/05/Planktotrons_2_400.png']",,,,"['53.5151', '8.146219999999971']","{'coordinates': ['53.5151', '8.146219999999971']}",, +","['http://mesocosm.org/wp-content/uploads/2017/05/planktotrons_1_400.png', 'http://mesocosm.org/wp-content/uploads/2017/05/Planktotrons_2_400.png']",,,,"['53.5151', '8.146219999999971']","{'coordinates': ['53.5151', '8.146219999999971']}" https://mesocosm.org/mesocosm/kiel-indoor-benthokosmen-zur-simulation-von-umweltfluktuationen/,Kiel-Indoor-Benthocosms (KIBs),GEOMAR-Helmholtz Center for Ocean Research Kiel,Germany,Europe,"GEOMAR-Helmholtz Center for Ocean Research Kiel West shore campusDüsternbrooker Weg 20D-24105 Kiel East shore campusWischhofstr. 1-3D-24148 Kiel @@ -4840,7 +4840,7 @@ Graphic: Christian Pansch   -","['http://mesocosm.org/wp-content/uploads/2018/04/IMG_6896-e1523449384719-200x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2018/04/IMG_6905-e1523449507437-200x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2018/04/A-264x300.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/B-300x181.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/C-300x222.jpg']",,,,"['54.330034', ' 10.148140']","{'coordinates': ['54.330034', '10.148140']}",, +","['http://mesocosm.org/wp-content/uploads/2018/04/IMG_6896-e1523449384719-200x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2018/04/IMG_6905-e1523449507437-200x300.jpeg', 'http://mesocosm.org/wp-content/uploads/2018/04/A-264x300.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/B-300x181.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/C-300x222.jpg']",,,,"['54.330034', ' 10.148140']","{'coordinates': ['54.330034', '10.148140']}" https://mesocosm.org/mesocosm/metu-mesocosm-system/,METU Mesocosm System,Middle East Technical University (METU),Turkey,Europe,"Orta Doğu Teknik Üniversitesi (ODTÜ), Middle East Technical University (METU), Üniversiteler Mahallesi, Dumlupınar Bulvarı No:1 06800 Çankaya Ankara/TURKEY, 06800 ","Prof.Dr. Meryem Beklioğlu ","2011, 2012",,"water depth and nutrients (both TP and TN) @@ -4856,7 +4856,7 @@ https://mesocosm.org/mesocosm/metu-mesocosm-system/,METU Mesocosm System,Middle ",,,,"http://limnology.bio.metu.edu.tr "," Photo: METU-Limnology Labratory -",['http://mesocosm.org/wp-content/uploads/2017/02/METU-300x204.jpg'],,,,"['39.8897009', '32.7520139']","{'coordinates': ['39.8897009', '32.7520139']}",, +",['http://mesocosm.org/wp-content/uploads/2017/02/METU-300x204.jpg'],,,,"['39.8897009', '32.7520139']","{'coordinates': ['39.8897009', '32.7520139']}" https://mesocosm.org/mesocosm/ceint-center-for-the-environmental-implications-of-nanotechnology/,CEINT-Center for the Environmental Implications of Nanotechnology,Duke University,USA,North-America,"Duke University 134 Chapel Drive Durham NC 27708 @@ -4891,7 +4891,7 @@ CEINT Mesocosm Facility   -","['http://mesocosm.org/wp-content/uploads/2017/05/Duke_mesocosms.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Duke_mesocosmsBPE.jpg']",,,,"['36.0241591', '-78.911455']","{'coordinates': ['36.0241591', '-78.911455']}",, +","['http://mesocosm.org/wp-content/uploads/2017/05/Duke_mesocosms.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Duke_mesocosmsBPE.jpg']",,,,"['36.0241591', '-78.911455']","{'coordinates': ['36.0241591', '-78.911455']}" https://mesocosm.org/mesocosm/lake-mesocosms/,Lake Mesocosms,Ludwig-Maximilians-University (LMU) Munich,Germany,Europe,"Ludwig-Maximilians-University (LMU) Munich Department Biology II Aquatic Ecology @@ -4931,7 +4931,7 @@ Mesocosm installation – view of the bags under water (Photo: Stibor) -","['http://mesocosm.org/wp-content/uploads/2017/05/Seeon_1_400px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Seeon_2_400px.jpg']",,,,"['47.9745129', '12.46009749999996']","{'coordinates': ['47.9745129', '12.46009749999996']}",, +","['http://mesocosm.org/wp-content/uploads/2017/05/Seeon_1_400px.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Seeon_2_400px.jpg']",,,,"['47.9745129', '12.46009749999996']","{'coordinates': ['47.9745129', '12.46009749999996']}" https://mesocosm.org/mesocosm/mesodrome/,University of Antwerp MESODROME,University of Antwerp,Belgium,Europe,"University of Antwerp, Dep. Biology Universiteitsplein 1 2610 Wilrijk @@ -4972,7 +4972,7 @@ Credit: Eric Struyf -",['http://mesocosm.org/wp-content/uploads/2018/05/Mesodrome_tech-drawing-300x115.jpg'],,,,"['51.155424', ' 4.409210']","{'coordinates': ['51.155424', '4.409210']}",, +",['http://mesocosm.org/wp-content/uploads/2018/05/Mesodrome_tech-drawing-300x115.jpg'],,,,"['51.155424', ' 4.409210']","{'coordinates': ['51.155424', '4.409210']}" https://mesocosm.org/mesocosm/estacion-de-ciencias-marinas-de-toralla-ecimat/,Estación de Ciencias Mariñas de Toralla (ECIMAT),University of Vigo,Spain,Europe,"Illa de Toralla E-36331 Coruxo Vigo @@ -5025,7 +5025,7 @@ Photo credits: Jose Gonzalez Fernandez   -","['http://mesocosm.org/wp-content/uploads/2018/04/5B25D5A7-B59A-480E-93EF-F72F6D49B420-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/FCDD4CA6-6509-4CFE-BE24-51C6D14BCC65-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/897C6409-336F-4357-9831-3D0F71827349-1024x768.jpg']",,,,"['42.201979', ' -8.798505']","{'coordinates': ['42.201979', '-8.798505']}",, +","['http://mesocosm.org/wp-content/uploads/2018/04/5B25D5A7-B59A-480E-93EF-F72F6D49B420-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/FCDD4CA6-6509-4CFE-BE24-51C6D14BCC65-1024x768.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/897C6409-336F-4357-9831-3D0F71827349-1024x768.jpg']",,,,"['42.201979', ' -8.798505']","{'coordinates': ['42.201979', '-8.798505']}" https://mesocosm.org/mesocosm/smart-ecolake/,Smart Ecolake,"Nanjing Institute of Geography and Limnology, Chinese Academy of Sciences (NIGLAS)",China,Asia,"73 East Beijing Road, Nanjing 210008, P.R.China @@ -5066,7 +5066,7 @@ automation for e.g. nutrient and water supplementation ",,"www.ecolake.net ","EcoSmart mesocosm facility  whole view, photo credits: Jianming Deng Mesocosm close up, photo credit: Jianming Deng -","['http://mesocosm.org/wp-content/uploads/2023/12/Whole-View_1.9MB-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/single-tank-1024x683.jpg']",,,,"['31.03', '120.42']","{'coordinates': ['31.03', '120.42']}",, +","['http://mesocosm.org/wp-content/uploads/2023/12/Whole-View_1.9MB-1024x683.jpg', 'http://mesocosm.org/wp-content/uploads/2023/12/single-tank-1024x683.jpg']",,,,"['31.03', '120.42']","{'coordinates': ['31.03', '120.42']}" https://mesocosm.org/mesocosm/imdea-water-institute/,IMDEA Water Institute,IMDEA Water Foundation,Spain,Europe,"IMDEA Water Institute Avenida Punto Com 2 PO Box 28805, Alcala de Henares @@ -5118,7 +5118,7 @@ Photo: Andreu Rico   -","['http://mesocosm.org/wp-content/uploads/2018/04/IMG_2170-300x181.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/20160519_121359-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/20170512_154035_resized-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/IMG-20170512-WA0010-300x169.jpg']",,,,"['40.5133474', ' -3.3386556000000382']","{'coordinates': ['40.5133474', '-3.3386556000000382']}",, +","['http://mesocosm.org/wp-content/uploads/2018/04/IMG_2170-300x181.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/20160519_121359-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/20170512_154035_resized-300x169.jpg', 'http://mesocosm.org/wp-content/uploads/2018/04/IMG-20170512-WA0010-300x169.jpg']",,,,"['40.5133474', ' -3.3386556000000382']","{'coordinates': ['40.5133474', '-3.3386556000000382']}" https://mesocosm.org/mesocosm/experimental-streams-facility-esf/,Experimental Streams Facility (ESF),ICRA (Catalan Institute for Water Research),Spain,Europe,"ICRA Catalan Institute for Water Research Carrer Emili Grahit 101 17003 Girona @@ -5185,7 +5185,7 @@ Photo credit: Vicenç Acuña   -","['http://mesocosm.org/wp-content/uploads/2018/05/image003.jpg@01D3EBA2.451771B0.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/image002.jpg@01D3EBA2.451771B0.jpg']",,,,"['41.967303', ' 2.840650']","{'coordinates': ['41.967303', '2.840650']}",, +","['http://mesocosm.org/wp-content/uploads/2018/05/image003.jpg@01D3EBA2.451771B0.jpg', 'http://mesocosm.org/wp-content/uploads/2018/05/image002.jpg@01D3EBA2.451771B0.jpg']",,,,"['41.967303', ' 2.840650']","{'coordinates': ['41.967303', '2.840650']}" https://mesocosm.org/mesocosm/aquatron-laboratory/,Aquatron Laboratory,Dalhousie University Life Sciences Centre,Canada,North-America,"Dalhousie University Life Sciences Centre 1355 Oxford Street PO BOX 15000 @@ -5258,7 +5258,7 @@ Aquatron Laboratory: Phytoplankton cultivation -","['http://mesocosm.org/wp-content/uploads/2017/05/aquatronS.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Aquatron-empty_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/halifax_pool_calltoaction.image_.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/featureslide.image_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron1_400.jpg']",,,,"['44.6356125', '-63.5944334']","{'coordinates': ['44.6356125', '-63.5944334']}",, +","['http://mesocosm.org/wp-content/uploads/2017/05/aquatronS.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Aquatron-empty_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/halifax_pool_calltoaction.image_.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/featureslide.image_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron1_400.jpg']",,,,"['44.6356125', '-63.5944334']","{'coordinates': ['44.6356125', '-63.5944334']}" test 1,[TEST CASE] Country: data unavailable,Dalhousie University Life Sciences Centre,,North-America,"Dalhousie University Life Sciences Centre 1355 Oxford Street PO BOX 15000 @@ -5313,7 +5313,7 @@ Aquatron Laboratory: Phytoplankton cultivation -","['http://mesocosm.org/wp-content/uploads/2017/05/aquatronS.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Aquatron-empty_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/halifax_pool_calltoaction.image_.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/featureslide.image_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron1_400.jpg']",,,,"['44.6356125', '-63.5944334']","{'coordinates': ['44.6356125', '-63.5944334']}",, +","['http://mesocosm.org/wp-content/uploads/2017/05/aquatronS.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/Aquatron-empty_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/halifax_pool_calltoaction.image_.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/featureslide.image_400.jpg', 'http://mesocosm.org/wp-content/uploads/2017/05/aquatron1_400.jpg']",,,,"['44.6356125', '-63.5944334']","{'coordinates': ['44.6356125', '-63.5944334']}" test 11,[TEST CASE] Abstract: data unavailable,University of Helsinki,Finland,Europe,"University of Helsinki P.O. Box 3 00014 University of Helsinki @@ -5344,7 +5344,7 @@ SYKE-MRC field mesocosm work at Tvärminne -","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",, +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}" test 12,[TEST CASE] Abstract: all data available,University of Helsinki,Finland,Europe,"University of Helsinki P.O. Box 3 00014 University of Helsinki @@ -5385,7 +5385,7 @@ SYKE-MRC field mesocosm work at Tvärminne -","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",, +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}" test 13,"[TEST CASE] Abstract: only ""Description of Facility"" data available",University of Helsinki,Finland,Europe,"University of Helsinki P.O. Box 3 00014 University of Helsinki @@ -5418,7 +5418,7 @@ SYKE-MRC field mesocosm work at Tvärminne -","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",, +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}" test 14,"[TEST CASE] Abstract: only ""Equipment"" data available",University of Helsinki,Finland,Europe,"University of Helsinki P.O. Box 3 00014 University of Helsinki @@ -5450,7 +5450,7 @@ SYKE-MRC field mesocosm work at Tvärminne -","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",, +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}" test 15,"[TEST CASE] Abstract: only ""Controlled Parameters"" data available",University of Helsinki,Finland,Europe,"University of Helsinki P.O. Box 3 00014 University of Helsinki @@ -5482,7 +5482,7 @@ SYKE-MRC field mesocosm work at Tvärminne -","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",, +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}" test 16,"[TEST CASE] Abstract: only ""Primary interests"" data available",University of Helsinki,Finland,Europe,"University of Helsinki P.O. Box 3 00014 University of Helsinki @@ -5518,7 +5518,7 @@ SYKE-MRC field mesocosm work at Tvärminne -","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",, +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}" test 17,"[TEST CASE] Abstract: only ""Research topics"" data available",University of Helsinki,Finland,Europe,"University of Helsinki P.O. Box 3 00014 University of Helsinki @@ -5552,7 +5552,7 @@ SYKE-MRC field mesocosm work at Tvärminne -","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}",, +","['http://mesocosm.org/wp-content/uploads/2017/03/Pristine-nature-reserve-for-experimental-set-ups-300x194.jpg', 'http://mesocosm.org/wp-content/uploads/2017/03/SYKE-MRC-field-mesocosm-work-300x282.jpg']",,,,"['59.8431619', '23.2440297']","{'coordinates': ['59.8431619', '23.2440297']}" test 18,[TEST CASE] Keywords: data unavailable,McGill University,Canada,North America,"McGill Department of Biology Stewart Biology Bldg 1205 Dr Penfield Ave @@ -5605,7 +5605,7 @@ Depth and multiparameter probe (YSI) physico-chemical measurements.  Photo cred -","['http://mesocosm.org/wp-content/uploads/2019/04/3-1024x769.png', 'http://mesocosm.org/wp-content/uploads/2019/04/2-1024x368.png', 'http://mesocosm.org/wp-content/uploads/2019/04/1.png']",,,,"['45.5368', ' -73.1578']","{'coordinates': ['45.5368', '-73.1578']}",, +","['http://mesocosm.org/wp-content/uploads/2019/04/3-1024x769.png', 'http://mesocosm.org/wp-content/uploads/2019/04/2-1024x368.png', 'http://mesocosm.org/wp-content/uploads/2019/04/1.png']",,,,"['45.5368', ' -73.1578']","{'coordinates': ['45.5368', '-73.1578']}" test 19,[TEST CASE] Keywords: data available,McGill University,Canada,North America,"McGill Department of Biology Stewart Biology Bldg 1205 Dr Penfield Ave @@ -5659,4 +5659,8 @@ Depth and multiparameter probe (YSI) physico-chemical measurements.  Photo cred -","['http://mesocosm.org/wp-content/uploads/2019/04/3-1024x769.png', 'http://mesocosm.org/wp-content/uploads/2019/04/2-1024x368.png', 'http://mesocosm.org/wp-content/uploads/2019/04/1.png']",,,,"['45.5368', ' -73.1578']","{'coordinates': ['45.5368', '-73.1578']}",, \ No newline at end of file +","['http://mesocosm.org/wp-content/uploads/2019/04/3-1024x769.png', 'http://mesocosm.org/wp-content/uploads/2019/04/2-1024x368.png', 'http://mesocosm.org/wp-content/uploads/2019/04/1.png']",,,,"['45.5368', ' -73.1578']","{'coordinates': ['45.5368', '-73.1578']}" +https://example.org/gr,[TEST CASE] Non-latin characters: Greek,Εθνικό Πανεπιστήμιο Αθηνών,Ελλάδα,Ευρώπη,,,2015–2024,Το κέντρο χρησιμοποιεί μεσόκοσμους για τη μελέτη των υδάτινων οικοσυστημάτων,Θερμοκρασία; Διαλυμένο οξυγόνο,Κλιματική αλλαγή; Θαλάσσια βιολογία,Αθήνα,Υδροβιολογία,Θαλάσσια οικολογία,Αισθητήρες θερμοκρασίας και pH,Ναι,https://example.org/source,https://example.org/photo1.jpg,photo1.jpg,equipment1.jpg,lodging1.jpg,Θερμική ρύθμιση,"['58.3712', ' 12.1613']","{'coordinates': ['58.3712', '12.1613']}" +https://example.org/ar,[TEST CASE] Non-latin characters: Arabic,الجامعة العربية للعلوم,مصر,إفريقيا,,,2018–2023,تُستخدم المِزْكُوسومات لدراسة التلوث المائي,درجة الحرارة؛ الملوحة,تغير المناخ؛ التنوع البيولوجي,القاهرة,البيئة المائية,علم الأحياء الدقيقة,مجسات حرارية,نعم,https://example.org/source2,https://example.org/photo2.jpg,photo2.jpg,equipment2.jpg,lodging2.jpg,تحكم في درجة الحرارة,"['58.3712', ' 12.1613']","{'coordinates': ['58.3712', '12.1613']}" +https://example.org/zh,[TEST CASE] Non-latin characters: Chinese,北京环境研究院,中国,亚洲,,,2020–2025,用于研究淡水生态系统的中尺度实验系统,温度; 溶解氧,藻类生长; 水质变化,北京,水生态学,水化学,传感器; 自动采样器,提供住宿,https://example.org/source3,https://example.org/photo3.jpg,photo3.jpg,equipment3.jpg,lodging3.jpg,温度控制,"['58.3712', ' 12.1613']","{'coordinates': ['58.3712', '12.1613']}" +https://example.org/ja,[TEST CASE] Non-latin characters: Japanese,日本環境学会,日本,アジア,,,2017–2025,淡水生態系の研究用メソコスム施設,温度; 溶存酸素,藻類動態; 水質分析,東京,淡水生態学,生態学,測定装置,あり,https://example.org/source4,https://example.org/photo4.jpg,photo4.jpg,equipment4.jpg,lodging4.jpg,加熱実験,"['58.3712', ' 12.1613']","{'coordinates': ['58.3712', '12.1613']}" \ No newline at end of file From d57678ba233b629ab0c5ac438b7887c2646a7a61 Mon Sep 17 00:00:00 2001 From: andrei Date: Tue, 14 Oct 2025 13:09:40 +0200 Subject: [PATCH 072/149] feat: descriptions for all functions --- .../workers/common/common/aquanavi/mapping.py | 33 +++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/server/workers/common/common/aquanavi/mapping.py b/server/workers/common/common/aquanavi/mapping.py index f4a3f9932..abe763adf 100644 --- a/server/workers/common/common/aquanavi/mapping.py +++ b/server/workers/common/common/aquanavi/mapping.py @@ -82,6 +82,15 @@ def get_and_process_value(row, column_name): return value_without_trailing_dot def get_latitude_longitude(row): + """ + The function returns a list with latitude and longitude. + + Args: + row (str): String DataFrame. + + Returns: + list: A list with latitude and longitude (or None). + """ coordinates_string = str(row[COLUMNS['location']]).strip() latitude, longitude = None, None @@ -97,8 +106,19 @@ def get_latitude_longitude(row): return [latitude, longitude] def get_years_of_experiments(row): - # Supported formats: yyyy - present; yyyy - yyyy; yyyy to present; since yyyy; - # started yyyy / starting yyyy / operational since yyyy; yyyy-present; + """ + The function returns a time range in the list format. + First value represents a starting date, second one - ending date. + Supported formats: yyyy - present; yyyy - yyyy; yyyy to present; since yyyy; + started yyyy / starting yyyy / operational since yyyy; yyyy-present. + All other date formats in the "Years of Mesocosm Experiments" column will be ignored. + + Args: + row (str): String DataFrame. + + Returns: + list: A list with start and end dates. + """ text = str(row[COLUMNS['years_of_experiments']]).strip() if not text: return None, None @@ -255,6 +275,15 @@ def get_id(row): return hashed_identifier def check_that_csv_file_exists(csv_path): + """ + This function checks that .CSV file exists in the file system. + + Args: + csv_path (str): A string with path to the .CSV file. + + Raises: + SystemExit: If any required column is missing. + """ if not csv_path.exists(): sys.exit(f"CSV does not exists: {csv_path}.") From a6bde73446f329863528d18e5d2f4750a2a8b2ea Mon Sep 17 00:00:00 2001 From: andrei Date: Tue, 14 Oct 2025 13:24:56 +0200 Subject: [PATCH 073/149] feat: prototype connection of React Leaflet --- package-lock.json | 76 +++++++++++++++++++++++++++++++++ package.json | 6 ++- vis/app.ts | 2 +- vis/js/components/Headstart.tsx | 3 +- vis/js/components/Map/index.tsx | 37 ++++++++++++++++ webpack.config.js | 65 ++++++++++++++-------------- 6 files changed, 153 insertions(+), 36 deletions(-) create mode 100644 vis/js/components/Map/index.tsx diff --git a/package-lock.json b/package-lock.json index d96307041..4d8049aba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,12 +21,14 @@ "hypher": "^0.2.5", "iso-639-1": "^3.1.5", "jquery": "^3.7.1", + "leaflet": "^1.9.4", "mark.js": "^8.11.1", "react": "^18.3.1", "react-bootstrap": "^0.33.1", "react-dom": "^18.3.1", "react-highlight-words": "^0.21.0", "react-hyphen": "^1.4.0", + "react-leaflet": "^4.2.1", "react-redux": "^8.1.3", "react-test-renderer": "^18.3.1", "redux": "^5.0.1", @@ -47,6 +49,7 @@ "@types/dateformat": "^5.0.3", "@types/jest": "^29.5.14", "@types/jquery": "^3.5.32", + "@types/leaflet": "^1.9.20", "@types/node": "^22.15.18", "@types/react": "^18.3.1", "@types/react-bootstrap": "^0.32.37", @@ -57,6 +60,7 @@ "@vitejs/plugin-react": "^4.4.1", "babel-loader": "^10.0.0", "bootstrap-sass": "^3.3.6", + "copy-webpack-plugin": "^13.0.1", "css-loader": "^7.1.2", "eslint": "^9.29.0", "eslint-plugin-react": "^7.37.5", @@ -2676,6 +2680,16 @@ "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", "dev": true }, + "node_modules/@react-leaflet/core": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@react-leaflet/core/-/core-2.1.0.tgz", + "integrity": "sha512-Qk7Pfu8BSarKGqILj4x7bCSZ1pjuAPZ+qmRwH5S7mDS91VSbVVsJSrW4qA+GPrro8t69gFYVMWb1Zc4yFmPiVg==", + "peerDependencies": { + "leaflet": "^1.9.0", + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, "node_modules/@rolldown/pluginutils": { "version": "1.0.0-beta.11", "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.11.tgz", @@ -3499,6 +3513,15 @@ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, + "node_modules/@types/leaflet": { + "version": "1.9.20", + "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.9.20.tgz", + "integrity": "sha512-rooalPMlk61LCaLOvBF2VIf9M47HgMQqi5xQ9QRi7c8PkdIe0WrIi5IxXUXQjAdL0c+vcQ01mYWbthzmp9GHWw==", + "dev": true, + "dependencies": { + "@types/geojson": "*" + } + }, "node_modules/@types/mime": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", @@ -5378,6 +5401,41 @@ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", "dev": true }, + "node_modules/copy-webpack-plugin": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-13.0.1.tgz", + "integrity": "sha512-J+YV3WfhY6W/Xf9h+J1znYuqTye2xkBUIGyTPWuBAT27qajBa5mR4f8WBmfDY3YjRftT2kqZZiLi1qf0H+UOFw==", + "dev": true, + "dependencies": { + "glob-parent": "^6.0.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.2.0", + "serialize-javascript": "^6.0.2", + "tinyglobby": "^0.2.12" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/core-js": { "version": "2.6.12", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", @@ -8606,6 +8664,11 @@ "shell-quote": "^1.8.1" } }, + "node_modules/leaflet": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz", + "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==" + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -9881,6 +9944,19 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, + "node_modules/react-leaflet": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/react-leaflet/-/react-leaflet-4.2.1.tgz", + "integrity": "sha512-p9chkvhcKrWn/H/1FFeVSqLdReGwn2qmiobOQGO3BifX+/vV/39qhY8dGqbdcPh1e6jxh/QHriLXr7a4eLFK4Q==", + "dependencies": { + "@react-leaflet/core": "^2.1.0" + }, + "peerDependencies": { + "leaflet": "^1.9.0", + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, "node_modules/react-lifecycles-compat": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", diff --git a/package.json b/package.json index 07aa48ac9..2f7de8f66 100644 --- a/package.json +++ b/package.json @@ -44,12 +44,14 @@ "hypher": "^0.2.5", "iso-639-1": "^3.1.5", "jquery": "^3.7.1", + "leaflet": "^1.9.4", "mark.js": "^8.11.1", "react": "^18.3.1", "react-bootstrap": "^0.33.1", "react-dom": "^18.3.1", "react-highlight-words": "^0.21.0", "react-hyphen": "^1.4.0", + "react-leaflet": "^4.2.1", "react-redux": "^8.1.3", "react-test-renderer": "^18.3.1", "redux": "^5.0.1", @@ -70,6 +72,7 @@ "@types/dateformat": "^5.0.3", "@types/jest": "^29.5.14", "@types/jquery": "^3.5.32", + "@types/leaflet": "^1.9.20", "@types/node": "^22.15.18", "@types/react": "^18.3.1", "@types/react-bootstrap": "^0.32.37", @@ -105,6 +108,7 @@ "webpack": "^5.99.8", "webpack-bundle-analyzer": "^4.5.0", "webpack-cli": "^6.0.1", - "webpack-dev-server": "^5.2.1" + "webpack-dev-server": "^5.2.1", + "copy-webpack-plugin": "^13.0.1" } } diff --git a/vis/app.ts b/vis/app.ts index 439445d16..9f4b1dfa2 100644 --- a/vis/app.ts +++ b/vis/app.ts @@ -19,4 +19,4 @@ export const start = (additionalConfig: any) => { const headstartRunner = new HeadstartRunner(config); headstartRunner.run(); -}; \ No newline at end of file +}; diff --git a/vis/js/components/Headstart.tsx b/vis/js/components/Headstart.tsx index fe1549bf6..6cf6467e4 100644 --- a/vis/js/components/Headstart.tsx +++ b/vis/js/components/Headstart.tsx @@ -14,6 +14,7 @@ import Loading from "../templates/Loading"; import List from "./List"; import TitleContext from "./TitleContext"; import Footer from "./Footer"; +import MyMap from "./Map"; const Headstart = ({ renderMap, @@ -45,7 +46,7 @@ const Headstart = ({
- +
)} {renderList && } diff --git a/vis/js/components/Map/index.tsx b/vis/js/components/Map/index.tsx new file mode 100644 index 000000000..995208e5a --- /dev/null +++ b/vis/js/components/Map/index.tsx @@ -0,0 +1,37 @@ +import React from "react"; +import { MapContainer, Marker, Popup, TileLayer } from "react-leaflet"; +import "leaflet/dist/leaflet.css"; + +import L from "leaflet"; +import markerIcon2x from "leaflet/dist/images/marker-icon-2x.png"; +import markerIcon from "leaflet/dist/images/marker-icon.png"; +import markerShadow from "leaflet/dist/images/marker-shadow.png"; +import "leaflet/dist/leaflet.css"; + +delete (L.Icon.Default.prototype as any)._getIconUrl; + +L.Icon.Default.mergeOptions({ + iconRetinaUrl: markerIcon2x as string, + iconUrl: markerIcon as string, + shadowUrl: markerShadow as string, +}); + +function MyMap() { + return ( + + + + Some popup + + + ); +} + +export default MyMap; diff --git a/webpack.config.js b/webpack.config.js index 345ef90b3..691143d06 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,5 +1,5 @@ const path = require("path"); - +const CopyPlugin = require("copy-webpack-plugin"); const { ProvidePlugin } = require("webpack"); const HtmlWebpackPlugin = require("html-webpack-plugin"); const MiniCssExtractPlugin = require("mini-css-extract-plugin"); @@ -102,6 +102,14 @@ module.exports = (env) => { }), new MiniCssExtractPlugin(miniCssConfig), ...(analyzeBundle ? [new BundleAnalyzerPlugin()] : []), + new CopyPlugin({ + patterns: [ + { + from: path.resolve(__dirname, "node_modules/leaflet/dist/images"), + to: "images", + }, + ], + }), ], module: { @@ -111,28 +119,6 @@ module.exports = (env) => { use: "ts-loader", exclude: /node_modules/, }, - { - test: [require.resolve("hypher/dist/jquery.hypher.js"), /lib\/*.js/], - use: [ - { - loader: "imports-loader", - options: { - imports: ["default jquery $", "default jquery jQuery"], - }, - }, - ], - }, - { - test: /lib\/*.js/, - use: [ - { - loader: "imports-loader", - options: { - imports: ["default jquery $", "default jquery jQuery"], - }, - }, - ], - }, { test: /\.[j]sx?$/, exclude: /node_modules/, @@ -141,25 +127,32 @@ module.exports = (env) => { { test: /\.(woff(2)?|ttf|eot|svg)(\?v=\d+\.\d+\.\d+)?$/, type: "asset/resource", + generator: { + filename: "fonts/[name][ext]", + }, }, { - test: /\.png$/, - use: [ - { - loader: "file-loader?name=img/[name].[ext]", - options: { exclude: /examples/ }, - }, - ], + test: /\.(png|jpe?g|gif)$/i, + type: "asset/resource", + generator: { + filename: "images/[name][ext]", + }, }, { test: /\.(sa|sc)ss$/, use: [ MiniCssExtractPlugin.loader, - "css-loader", + { + loader: "css-loader", + options: { + url: true, + esModule: false, + }, + }, { loader: "sass-loader", options: { - additionalData: `$skin: "${skin}";`, + additionalData: `$skin: "${process.env.SKIN || ""}";`, sassOptions: { includePaths: ["node_modules"], }, @@ -169,7 +162,13 @@ module.exports = (env) => { }, { test: /\.css$/, - use: [MiniCssExtractPlugin.loader, "css-loader"], + use: [ + MiniCssExtractPlugin.loader, + { + loader: "css-loader", + options: { url: true, esModule: false }, + }, + ], }, { test: /\.csl$/, type: "asset/source" }, ], From 0aa116d78a2b8a0e22e2b29b38a75a32cfbda144 Mon Sep 17 00:00:00 2001 From: andrei Date: Tue, 14 Oct 2025 13:43:12 +0200 Subject: [PATCH 074/149] bugfix: missing type --- vis/js/types/visualization/service.ts | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/vis/js/types/visualization/service.ts b/vis/js/types/visualization/service.ts index 88ad63ba9..caee8969c 100644 --- a/vis/js/types/visualization/service.ts +++ b/vis/js/types/visualization/service.ts @@ -1,8 +1,9 @@ export enum ServiceType { - BASE = 'base', - DOAJ = 'doaj', - ORCID = 'orcid', - OPENAIRE = 'openaire', - PUBMED = 'pubmed', - PLOS = 'plos' -} \ No newline at end of file + BASE = "base", + DOAJ = "doaj", + ORCID = "orcid", + OPENAIRE = "openaire", + PUBMED = "pubmed", + PLOS = "plos", + AQUANAVI = "aquanavi", +} From 3f6499b1b4397046e7261d950467d1523cdd628a Mon Sep 17 00:00:00 2001 From: andrei Date: Tue, 14 Oct 2025 14:41:46 +0200 Subject: [PATCH 075/149] feat: definition of visualization component --- vis/js/components/Headstart.tsx | 33 +++++----- vis/js/reducers/chartType.ts | 34 ++++++++--- vis/js/types/state/index.ts | 3 +- vis/js/types/state/slices/chartType.ts | 1 - vis/js/types/state/slices/index.ts | 1 - vis/js/types/state/slices/misc.ts | 1 + .../visualization/visualization-types.ts | 7 ++- vis/js/utils/getVisualizationComponent.tsx | 22 +++++++ vis/test/component/backlink.test.jsx | 60 +++++++++---------- .../__snapshots__/backlink.test.jsx.snap | 2 +- vis/test/snapshot/backlink.test.jsx | 8 +-- 11 files changed, 109 insertions(+), 63 deletions(-) delete mode 100644 vis/js/types/state/slices/chartType.ts create mode 100644 vis/js/utils/getVisualizationComponent.tsx diff --git a/vis/js/components/Headstart.tsx b/vis/js/components/Headstart.tsx index 6cf6467e4..85bf7fc5d 100644 --- a/vis/js/components/Headstart.tsx +++ b/vis/js/components/Headstart.tsx @@ -1,12 +1,6 @@ -// @ts-nocheck -import React from "react"; +import React, { FC } from "react"; import { connect } from "react-redux"; -import { STREAMGRAPH_MODE } from "../reducers/chartType"; - import LocalizationProvider from "./LocalizationProvider"; - -import Streamgraph from "./Streamgraph"; -import KnowledgeMap from "./KnowledgeMap"; import ModalButtons from "./ModalButtons"; import Modals from "./Modals"; import Toolbar from "./Toolbar"; @@ -14,12 +8,23 @@ import Loading from "../templates/Loading"; import List from "./List"; import TitleContext from "./TitleContext"; import Footer from "./Footer"; -import MyMap from "./Map"; +import { getVisualizationComponent } from "../utils/getVisualizationComponent"; +import { State, VisualizationTypes } from "../types"; +import { Localization } from "../i18n/localization"; + +interface HeadstartProps { + renderMap: boolean; + renderList: boolean; + visualizationType: VisualizationTypes; + isLoading: boolean; + showLoading: boolean; + localization: Localization; +} -const Headstart = ({ +const Headstart: FC = ({ renderMap, renderList, - isStreamgraph, + visualizationType, isLoading, showLoading, localization, @@ -37,7 +42,7 @@ const Headstart = ({ ); } - const Map = isStreamgraph ? Streamgraph : KnowledgeMap; + const VisualizationComponent = getVisualizationComponent(visualizationType); return ( @@ -46,7 +51,7 @@ const Headstart = ({
- + {VisualizationComponent}
)} {renderList && } @@ -58,10 +63,10 @@ const Headstart = ({ ); }; -const mapStateToProps = (state) => ({ +const mapStateToProps = (state: State) => ({ renderMap: state.misc.renderMap, renderList: state.misc.renderList, - isStreamgraph: state.chartType === STREAMGRAPH_MODE, + visualizationType: state.chartType, isLoading: state.misc.isLoading, showLoading: state.misc.showLoading, localization: state.localization, diff --git a/vis/js/reducers/chartType.ts b/vis/js/reducers/chartType.ts index 7eebb972f..a2cca9fb0 100644 --- a/vis/js/reducers/chartType.ts +++ b/vis/js/reducers/chartType.ts @@ -1,18 +1,36 @@ -export const STREAMGRAPH_MODE = "streamgraph"; -export const KNOWLEDGEMAP_MODE = "knowledgeMap"; +import { VisualizationTypes } from "../types"; -type ChartType = typeof STREAMGRAPH_MODE | typeof KNOWLEDGEMAP_MODE; +export const STREAMGRAPH_MODE = "timeline"; +export const KNOWLEDGEMAP_MODE = "overview"; +export const GEOMAP_MODE = "geomap"; -const chartType = (state: ChartType = KNOWLEDGEMAP_MODE, action: any) => { +const chartType = ( + state: VisualizationTypes = KNOWLEDGEMAP_MODE, + action: any, +) => { if (action.canceled) { return state; } - + switch (action.type) { case "INITIALIZE": - return action.configObject.is_streamgraph - ? STREAMGRAPH_MODE - : KNOWLEDGEMAP_MODE; + const isStreamgraph: boolean = action.configObject.is_streamgraph; + const type: VisualizationTypes = action.configObject.visualization_type; + + if (isStreamgraph) { + return STREAMGRAPH_MODE; + } + + switch (type) { + case KNOWLEDGEMAP_MODE: + return KNOWLEDGEMAP_MODE; + case STREAMGRAPH_MODE: + return STREAMGRAPH_MODE; + case GEOMAP_MODE: + return GEOMAP_MODE; + default: + KNOWLEDGEMAP_MODE; + } default: return state; } diff --git a/vis/js/types/state/index.ts b/vis/js/types/state/index.ts index d81781412..f1c165c81 100644 --- a/vis/js/types/state/index.ts +++ b/vis/js/types/state/index.ts @@ -1,6 +1,7 @@ import { Localization } from "../../i18n/localization"; import { Author } from "../models/author"; import { ServiceType } from "../visualization/service"; +import { VisualizationTypes } from "../visualization/visualization-types"; import * as slices from "./slices"; export interface State { @@ -9,7 +10,7 @@ export interface State { author: Author; bubbleOrder: slices.BubbleOrder; chart: slices.Chart; - chartType: slices.ChartTypes; + chartType: VisualizationTypes; contextLine: slices.ContextLine; data: slices.Data; heading: slices.Heading; diff --git a/vis/js/types/state/slices/chartType.ts b/vis/js/types/state/slices/chartType.ts deleted file mode 100644 index f35face0c..000000000 --- a/vis/js/types/state/slices/chartType.ts +++ /dev/null @@ -1 +0,0 @@ -export type ChartTypes = "knowledgeMap" | "streamgraph"; diff --git a/vis/js/types/state/slices/index.ts b/vis/js/types/state/slices/index.ts index 55317615c..5c97ee86a 100644 --- a/vis/js/types/state/slices/index.ts +++ b/vis/js/types/state/slices/index.ts @@ -16,5 +16,4 @@ export { SelectedBubble } from "./selected-bubble"; export { Streamgraph } from "./streamgraph"; export { Toolbar } from "./toolbar"; export { Tracking } from "./tracking"; -export { ChartTypes } from "./chartType"; export { SelectedPaper } from "./selected-paper"; diff --git a/vis/js/types/state/slices/misc.ts b/vis/js/types/state/slices/misc.ts index 382e61020..53825d187 100644 --- a/vis/js/types/state/slices/misc.ts +++ b/vis/js/types/state/slices/misc.ts @@ -6,4 +6,5 @@ export interface Misc { renderList: boolean; renderMap: boolean; visTag: "visualization"; + timestamp?: string; } diff --git a/vis/js/types/visualization/visualization-types.ts b/vis/js/types/visualization/visualization-types.ts index 5208997a4..9ed14c873 100644 --- a/vis/js/types/visualization/visualization-types.ts +++ b/vis/js/types/visualization/visualization-types.ts @@ -1,7 +1,8 @@ /* - There are two visualization types in the project: + There are few visualization types in the project: 1. timeline - this is a Streamgraph map; - 2. overview - this is a map with "bubbles". + 2. overview - this is a map with "bubbles"; + 3. geomap - this is a geographical map. */ -export type VisualizationTypes = "timeline" | "overview"; +export type VisualizationTypes = "timeline" | "overview" | "geomap"; diff --git a/vis/js/utils/getVisualizationComponent.tsx b/vis/js/utils/getVisualizationComponent.tsx new file mode 100644 index 000000000..ad8f4ba04 --- /dev/null +++ b/vis/js/utils/getVisualizationComponent.tsx @@ -0,0 +1,22 @@ +import { ReactNode } from "react"; +import { VisualizationTypes } from "../types"; +import * as chartType from "../reducers/chartType"; +import MyMap from "../components/Map"; +import Streamgraph from "../components/Streamgraph"; +import KnowledgeMap from "../components/KnowledgeMap"; +import React from "react"; + +export const getVisualizationComponent = ( + type: VisualizationTypes, +): ReactNode => { + switch (type) { + case chartType.GEOMAP_MODE: + return ; + case chartType.STREAMGRAPH_MODE: + return ; + case chartType.KNOWLEDGEMAP_MODE: + return ; + default: + return ; + } +}; diff --git a/vis/test/component/backlink.test.jsx b/vis/test/component/backlink.test.jsx index 56ae6e764..5a9c9ea52 100644 --- a/vis/test/component/backlink.test.jsx +++ b/vis/test/component/backlink.test.jsx @@ -1,13 +1,13 @@ -import { render, screen, fireEvent } from '@testing-library/react'; -import { cleanup } from '@testing-library/react'; -import { Provider } from 'react-redux'; -import configureStore from 'redux-mock-store'; -import { expect, describe, it, vi, afterEach } from 'vitest'; +import { render, screen, fireEvent } from "@testing-library/react"; +import { cleanup } from "@testing-library/react"; +import { Provider } from "react-redux"; +import configureStore from "redux-mock-store"; +import { expect, describe, it, vi, afterEach } from "vitest"; -import BackLinkContainer from '../../js/components/Backlink'; -import BackLinkTemplate from '../../js/templates/Backlink'; -import { BackLink } from '../../js/components/Backlink'; -import { zoomOut } from '../../js/actions'; +import BackLinkContainer from "../../js/components/Backlink"; +import BackLinkTemplate from "../../js/templates/Backlink"; +import { BackLink } from "../../js/components/Backlink"; +import { zoomOut } from "../../js/actions"; // Setup function for Backlink component tests const setup = (overrideProps = {}) => { @@ -15,7 +15,7 @@ const setup = (overrideProps = {}) => { hidden: false, onClick: vi.fn(), localization: { - backlink: 'Sample backlink label', + backlink: "Sample backlink label", }, ...overrideProps, }; @@ -25,36 +25,36 @@ const setup = (overrideProps = {}) => { }; // Basic component render tests using @testing-library/react -describe('Backlink component', () => { +describe("Backlink component", () => { // Cleanup after each test afterEach(() => { cleanup(); }); - it('renders', () => { + it("renders", () => { setup(); - expect(screen.getByText('Sample backlink label')).toBeInTheDocument(); + expect(screen.getByText("Sample backlink label")).toBeInTheDocument(); }); - describe('visibility', () => { - it('renders shown', () => { + describe("visibility", () => { + it("renders shown", () => { setup({ hidden: false }); - expect(screen.getByText('Sample backlink label')).toBeInTheDocument(); + expect(screen.getByText("Sample backlink label")).toBeInTheDocument(); }); - it('renders hidden', () => { + it("renders hidden", () => { setup({ hidden: true }); - const backlinkElement = screen.queryByText('Sample backlink label'); + const backlinkElement = screen.queryByText("Sample backlink label"); expect(backlinkElement).toBeNull(); }); }); - describe('dom tests', () => { + describe("dom tests", () => { /** * Component event tests */ - describe('onclick', () => { - it('triggers the onClick function when clicked', () => { + describe("onclick", () => { + it("triggers the onClick function when clicked", () => { const onClick = vi.fn(); setup({ onClick }); @@ -76,22 +76,22 @@ describe('Backlink component', () => { /** * Redux/React integration tests */ - describe('onclick (redux integration)', () => { + describe("onclick (redux integration)", () => { const mockStore = configureStore([]); - it('should dispatch zoomOut when clicked', () => { + it("should dispatch zoomOut when clicked", () => { const store = mockStore({ zoom: true, - chartType: 'knowledgeMap', + chartType: "overview", localization: { - backlink: 'Sample backlink label', + backlink: "Sample backlink label", }, }); render( - + , ); const link = screen.getByText(/Sample backlink label/i); @@ -108,13 +108,13 @@ describe('Backlink component', () => { }); // Backlink template tests -describe('Backlink template', () => { +describe("Backlink template", () => { afterEach(() => { cleanup(); }); - it('renders with the default classname', () => { + it("renders with the default classname", () => { render(); - expect(screen.getByText('sample text')).toBeInTheDocument(); + expect(screen.getByText("sample text")).toBeInTheDocument(); }); -}); \ No newline at end of file +}); diff --git a/vis/test/snapshot/__snapshots__/backlink.test.jsx.snap b/vis/test/snapshot/__snapshots__/backlink.test.jsx.snap index 7f8fcec1e..a2afe41a6 100644 --- a/vis/test/snapshot/__snapshots__/backlink.test.jsx.snap +++ b/vis/test/snapshot/__snapshots__/backlink.test.jsx.snap @@ -1,6 +1,6 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`Backlink component snapshot > matches as knowledgeMap snapshot 1`] = ` +exports[`Backlink component snapshot > matches as overview snapshot 1`] = `
+ {location}: + + {children || location_fallback} + +
+ ); +}; diff --git a/vis/js/templates/listentry/StandardListEntry.tsx b/vis/js/templates/listentry/StandardListEntry.tsx index 927103670..f469f575e 100644 --- a/vis/js/templates/listentry/StandardListEntry.tsx +++ b/vis/js/templates/listentry/StandardListEntry.tsx @@ -1,8 +1,14 @@ -import React, { FC } from "react"; +import { FC } from "react"; import { connect } from "react-redux"; -import { STREAMGRAPH_MODE } from "../../reducers/chartType"; + +import { GEOMAP_MODE, STREAMGRAPH_MODE } from "../../reducers/chartType"; +import { + AllPossiblePapersType, + ServiceType, + SortValuesType, + State, +} from "../../types"; import { mapDispatchToListEntriesProps } from "../../utils/eventhandlers"; -import PaperButtons from "./PaperButtons"; import Abstract from "./Abstract"; import AccessIcons from "./AccessIcons"; import Area from "./Area"; @@ -14,15 +20,11 @@ import DocumentType from "./DocumentType"; import EntryBacklink from "./EntryBacklink"; import Keywords from "./Keywords"; import Link from "./Link"; +import { Location } from "./Location"; import Metrics from "./Metrics"; import OrcidMetrics from "./OrcidMetrics"; +import PaperButtons from "./PaperButtons"; import Title from "./Title"; -import { - AllPossiblePapersType, - ServiceType, - SortValuesType, - State, -} from "../../types"; interface StandardListEntryProps { showDocumentType: boolean; @@ -31,6 +33,7 @@ interface StandardListEntryProps { showBacklink: boolean; showDocTags: boolean; showKeywords: boolean; + showLocation: boolean; service: ServiceType; paper: AllPossiblePapersType; isContentBased: boolean; @@ -40,10 +43,19 @@ interface StandardListEntryProps { handleBacklinkClick: () => void; } +const getLocationFromPaper = (paper: AllPossiblePapersType): string | null => { + if ("geographicalData" in paper && paper.geographicalData) { + return paper.geographicalData.country; + } + + return null; +}; + const StandardListEntry: FC = ({ paper, showDocumentType, showKeywords, + showLocation, showMetrics, isContentBased, baseUnit, @@ -68,6 +80,8 @@ const StandardListEntry: FC = ({ !showMetrics && (!!citations || parseInt(citations as unknown as string) === 0); + const location = getLocationFromPaper(paper); + return (
@@ -87,6 +101,7 @@ const StandardListEntry: FC = ({ )} {paper.comments.length > 0 && } + {showLocation && {location}} {showKeywords && {paper.keywords}} {showAllDocTypes && } @@ -130,6 +145,7 @@ const mapStateToProps = (state: State) => ({ showMetrics: state.list.showMetrics, isContentBased: state.list.isContentBased, baseUnit: state.list.baseUnit, + showLocation: state.chartType === GEOMAP_MODE && Boolean(state.selectedPaper), showKeywords: state.list.showKeywords && (!!state.selectedPaper || !state.list.hideUnselectedKeywords), diff --git a/vis/js/types/models/paper.ts b/vis/js/types/models/paper.ts index 95886f3d9..a87a440c6 100644 --- a/vis/js/types/models/paper.ts +++ b/vis/js/types/models/paper.ts @@ -128,7 +128,11 @@ export interface AquanaviPaper extends CommonPaperDataForAllIntegrations { geographicalData: GeographicalData | null; } -export type AllPossiblePapersType = BasePaper | PubmedPaper | OrcidPaper; +export type AllPossiblePapersType = + | BasePaper + | PubmedPaper + | OrcidPaper + | AquanaviPaper; export interface Paper { id: string; From 5dd6bd8e472d6fa3037ecdbb0a8a35fa0d3a6aff Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 27 Oct 2025 15:36:44 +0100 Subject: [PATCH 092/149] feat: flag for controlling the build platform --- server/workers/build_docker_images.sh | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/server/workers/build_docker_images.sh b/server/workers/build_docker_images.sh index 1bbd231ce..430ccb4cb 100755 --- a/server/workers/build_docker_images.sh +++ b/server/workers/build_docker_images.sh @@ -1,15 +1,32 @@ #!/bin/bash + +# Defines the script directory SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" + +# Define the list of services services=("api" "persistence" "dataprocessing" "base" "pubmed" "openaire" "orcid" "metrics") + +# Receive current commit service_version="`git rev-parse HEAD`" + echo "" echo "Building services with version $service_version" echo "" + +# Cycle across all services for service in ${services[@]}; do echo "" echo "Building $service" echo "" - docker build --platform linux/amd64 -f "$SCRIPT_DIR/../workers/$service/Dockerfile" -t "$service:$service_version" "$SCRIPT_DIR/../" + + # Checks that the --platform-linux flag has been passed and determines the necessary docker build command + if [[ "$1" == "--platform-linux" ]]; then + echo "Building services with version --platform linux/amd64" + docker build --platform linux/amd64 -f "$SCRIPT_DIR/../workers/$service/Dockerfile" -t "$service:$service_version" "$SCRIPT_DIR/../" + else + echo "Building services without version --platform linux/amd64" + docker build -f "$SCRIPT_DIR/../workers/$service/Dockerfile" -t "$service:$service_version" "$SCRIPT_DIR/../" + fi done echo "" From 4673ebe15d52d3684a69ad023bfa57d1c1935236 Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 27 Oct 2025 15:52:50 +0100 Subject: [PATCH 093/149] feat: the authors info is hidden for geomap visualizations --- vis/js/templates/listentry/StandardListEntry.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/vis/js/templates/listentry/StandardListEntry.tsx b/vis/js/templates/listentry/StandardListEntry.tsx index f469f575e..d9637499a 100644 --- a/vis/js/templates/listentry/StandardListEntry.tsx +++ b/vis/js/templates/listentry/StandardListEntry.tsx @@ -34,6 +34,7 @@ interface StandardListEntryProps { showDocTags: boolean; showKeywords: boolean; showLocation: boolean; + showAuthors: boolean; service: ServiceType; paper: AllPossiblePapersType; isContentBased: boolean; @@ -56,6 +57,7 @@ const StandardListEntry: FC = ({ showDocumentType, showKeywords, showLocation, + showAuthors, showMetrics, isContentBased, baseUnit, @@ -89,7 +91,9 @@ const StandardListEntry: FC = ({
- <Details authors={paper.authors_list} source={paper.published_in} /> + {showAuthors && ( + <Details authors={paper.authors_list} source={paper.published_in} /> + )} <Link address={paper.list_link.address} isDoi={paper.list_link.isDoi} @@ -159,6 +163,7 @@ const mapStateToProps = (state: State) => ({ state.service === "aquanavi") && !!state.selectedPaper, service: state.service, + showAuthors: state.chartType !== GEOMAP_MODE, }); export default connect( From b0bc7d15901b6803994cdc3c17fd63543a83df66 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Tue, 28 Oct 2025 09:55:36 +0100 Subject: [PATCH 094/149] feat: the pin component implementation --- vis/js/templates/Geomap/Mesocosm/index.tsx | 13 ------ vis/js/templates/Geomap/Pin/createPinIcon.ts | 9 ++++ vis/js/templates/Geomap/Pin/index.tsx | 21 +++++++++ vis/js/templates/Geomap/Pin/types.ts | 7 +++ vis/js/templates/Geomap/index.tsx | 45 +++++++++++++++----- vis/js/utils/coordinates.ts | 19 +++++++++ vis/stylesheets/modules/_geomap.scss | 35 +++++++++++++++ 7 files changed, 125 insertions(+), 24 deletions(-) delete mode 100644 vis/js/templates/Geomap/Mesocosm/index.tsx create mode 100644 vis/js/templates/Geomap/Pin/createPinIcon.ts create mode 100644 vis/js/templates/Geomap/Pin/index.tsx create mode 100644 vis/js/templates/Geomap/Pin/types.ts create mode 100644 vis/js/utils/coordinates.ts diff --git a/vis/js/templates/Geomap/Mesocosm/index.tsx b/vis/js/templates/Geomap/Mesocosm/index.tsx deleted file mode 100644 index 0c6b25e05..000000000 --- a/vis/js/templates/Geomap/Mesocosm/index.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { FC } from "react"; -import { Marker } from "react-leaflet"; -import { AquanaviPaper } from "@/js/types"; - -export const Mesocosm: FC<AquanaviPaper> = ({ geographicalData }) => { - if (!geographicalData?.north || !geographicalData?.east) { - return null; - } - - const { north: latitude, east: longitude } = geographicalData; - - return <Marker position={[latitude, longitude]} />; -}; diff --git a/vis/js/templates/Geomap/Pin/createPinIcon.ts b/vis/js/templates/Geomap/Pin/createPinIcon.ts new file mode 100644 index 000000000..bd1602a0b --- /dev/null +++ b/vis/js/templates/Geomap/Pin/createPinIcon.ts @@ -0,0 +1,9 @@ +import L from "leaflet"; + +export const createPinIcon = (isActive: boolean) => + L.divIcon({ + className: `custom-marker ${isActive ? "selected" : ""}`, + html: `<div class="marker-shape"></div>`, + iconSize: [22, 30], + iconAnchor: [11, 30], + }); diff --git a/vis/js/templates/Geomap/Pin/index.tsx b/vis/js/templates/Geomap/Pin/index.tsx new file mode 100644 index 000000000..3a802e840 --- /dev/null +++ b/vis/js/templates/Geomap/Pin/index.tsx @@ -0,0 +1,21 @@ +import { FC, memo } from "react"; +import { Marker } from "react-leaflet"; + +import { createPinIcon } from "./createPinIcon"; +import { PinProps } from "./types"; + +export const Pin: FC<PinProps> = memo(({ id, lat, lon, isActive, onClick }) => { + const handleClick = () => { + onClick(id); + }; + + return ( + <Marker + position={[lat, lon]} + icon={createPinIcon(isActive)} + eventHandlers={{ + click: handleClick, + }} + /> + ); +}); diff --git a/vis/js/templates/Geomap/Pin/types.ts b/vis/js/templates/Geomap/Pin/types.ts new file mode 100644 index 000000000..c381eae18 --- /dev/null +++ b/vis/js/templates/Geomap/Pin/types.ts @@ -0,0 +1,7 @@ +export interface PinProps { + id: string; + lon: number; + lat: number; + isActive: boolean; + onClick: (id: string) => void; +} diff --git a/vis/js/templates/Geomap/index.tsx b/vis/js/templates/Geomap/index.tsx index 4c58e8fe3..7d7db40bc 100644 --- a/vis/js/templates/Geomap/index.tsx +++ b/vis/js/templates/Geomap/index.tsx @@ -1,26 +1,49 @@ -import { FC } from "react"; +import "leaflet/dist/leaflet.css"; + +import { FC, useCallback, useState } from "react"; import { MapContainer, TileLayer } from "react-leaflet"; -import { AquanaviPaper, State } from "@/js/types"; import { useSelector } from "react-redux"; -import { Mesocosm } from "./Mesocosm"; + +import { State } from "@/js/types"; +import { getCoordinatesFromPaper } from "@/js/utils/coordinates"; + import { OPTIONS } from "./options"; -import "leaflet/dist/leaflet.css"; +import { Pin } from "./Pin"; + +const { map, tileLayer } = OPTIONS; const getMesocosmsData = (state: State) => state.data.list; export const Geomap: FC = () => { - const { map, tileLayer } = OPTIONS; + const [selectedPinId, setSelectedPinId] = useState<string | null>(null); const mesocosms = useSelector(getMesocosmsData); + const handlePinClick = useCallback((id: string) => { + setSelectedPinId(id); + }, []); + return ( <MapContainer {...map} className="geomap_container"> <TileLayer {...tileLayer} /> - {mesocosms.map((mesocosm) => ( - <Mesocosm - key={mesocosm.safe_id} - {...(mesocosm as any as AquanaviPaper)} - /> - ))} + {mesocosms.map((data) => { + const { safe_id: id } = data; + const { east, north } = getCoordinatesFromPaper(data); + + if (!east || !north) { + return null; + } + + return ( + <Pin + key={id} + id={id} + lon={east} + lat={north} + isActive={selectedPinId === id} + onClick={handlePinClick} + /> + ); + })} </MapContainer> ); }; diff --git a/vis/js/utils/coordinates.ts b/vis/js/utils/coordinates.ts new file mode 100644 index 000000000..e20ac0478 --- /dev/null +++ b/vis/js/utils/coordinates.ts @@ -0,0 +1,19 @@ +import { AllPossiblePapersType } from "../types"; + +/** + * This function extracts coordinates from the document data. It is returning coordinates + * or null if coordinates are not presented in the document data. + */ +export const getCoordinatesFromPaper = (data: AllPossiblePapersType) => { + if (!("geographicalData" in data)) { + return { east: null, north: null }; + } + + const { geographicalData } = data; + + if (!geographicalData) { + return { east: null, north: null }; + } + + return geographicalData; +}; diff --git a/vis/stylesheets/modules/_geomap.scss b/vis/stylesheets/modules/_geomap.scss index 3c74e74d3..570f4618a 100644 --- a/vis/stylesheets/modules/_geomap.scss +++ b/vis/stylesheets/modules/_geomap.scss @@ -4,3 +4,38 @@ height: 100vh; width: 100%; } + +.custom-marker { + position: relative; +} + +.marker-shape { + width: 22px; + height: 22px; + background-color: #000; + border-radius: 50% 50% 50% 0; + transform: rotate(-45deg); + border: 2px solid white; + transition: 200ms ease; +} + +.custom-marker:hover .marker-shape { + scale: 1.2; + background-color: #007bff; +} + +.custom-marker.selected .marker-shape { + scale: 1.2; + background-color: #007bff; +} + +.marker-shape::after { + content: ""; + position: absolute; + width: 6px; + height: 6px; + background: white; + border-radius: 50%; + top: 6px; + left: 6px; +} From 4d7292ab0ed36b8b7bea2ed608316056692b74a7 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Tue, 28 Oct 2025 10:21:33 +0100 Subject: [PATCH 095/149] feat: map borders and min zoom configuration --- vis/js/templates/Geomap/options.ts | 7 +++++++ vis/js/templates/Geomap/types.ts | 6 +++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/vis/js/templates/Geomap/options.ts b/vis/js/templates/Geomap/options.ts index ec344a2ce..92d9a469d 100644 --- a/vis/js/templates/Geomap/options.ts +++ b/vis/js/templates/Geomap/options.ts @@ -4,6 +4,13 @@ export const OPTIONS: Options = { map: { center: [48.216651235748074, 16.39589688527869], zoom: 4, + minZoom: 2, + maxBounds: [ + [-85, -180], + [85, 180], + ], + maxBoundsViscosity: 1.0, + worldCopyJump: true, }, tileLayer: { attribution: "© OpenStreetMap contributors", diff --git a/vis/js/templates/Geomap/types.ts b/vis/js/templates/Geomap/types.ts index 081ad4110..79c42bf49 100644 --- a/vis/js/templates/Geomap/types.ts +++ b/vis/js/templates/Geomap/types.ts @@ -1,8 +1,12 @@ -import { LatLngTuple } from "leaflet"; +import { LatLngBoundsExpression, LatLngTuple } from "leaflet"; interface Map { center: LatLngTuple; zoom: number; + minZoom: number; + maxBounds: LatLngBoundsExpression; + maxBoundsViscosity: number; + worldCopyJump: boolean; } interface TileLayer { From 303cae865fc9179bbd1d595f3de2bd5d4e730dac Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Tue, 28 Oct 2025 13:34:40 +0100 Subject: [PATCH 096/149] bugfix: styles of the dot in the pin --- vis/stylesheets/modules/_geomap.scss | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/vis/stylesheets/modules/_geomap.scss b/vis/stylesheets/modules/_geomap.scss index 570f4618a..c3bfb34af 100644 --- a/vis/stylesheets/modules/_geomap.scss +++ b/vis/stylesheets/modules/_geomap.scss @@ -32,10 +32,11 @@ .marker-shape::after { content: ""; position: absolute; - width: 6px; - height: 6px; + width: 8px; + height: 8px; background: white; border-radius: 50%; - top: 6px; - left: 6px; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); } From 03b86e8f873255a20ec3cd4b1d86b40f6a3ca2af Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Tue, 28 Oct 2025 14:36:39 +0100 Subject: [PATCH 097/149] feat: connection between pins and list entries --- vis/js/templates/Geomap/Pin/index.tsx | 16 +++++--- vis/js/templates/Geomap/Pin/types.ts | 8 ++-- vis/js/templates/Geomap/index.tsx | 49 ++++++++++++------------- vis/js/templates/Geomap/options.ts | 4 +- vis/js/templates/Geomap/types.ts | 4 +- vis/js/templates/listentry/Abstract.tsx | 5 ++- vis/js/types/state/index.ts | 2 +- vis/stylesheets/modules/_geomap.scss | 8 +--- 8 files changed, 49 insertions(+), 47 deletions(-) diff --git a/vis/js/templates/Geomap/Pin/index.tsx b/vis/js/templates/Geomap/Pin/index.tsx index 3a802e840..6ac6f2a17 100644 --- a/vis/js/templates/Geomap/Pin/index.tsx +++ b/vis/js/templates/Geomap/Pin/index.tsx @@ -1,17 +1,23 @@ import { FC, memo } from "react"; import { Marker } from "react-leaflet"; +import { getCoordinatesFromPaper } from "@/js/utils/coordinates"; + import { createPinIcon } from "./createPinIcon"; import { PinProps } from "./types"; -export const Pin: FC<PinProps> = memo(({ id, lat, lon, isActive, onClick }) => { - const handleClick = () => { - onClick(id); - }; +export const Pin: FC<PinProps> = memo(({ data, isActive, onClick }) => { + const { east, north } = getCoordinatesFromPaper(data); + + const handleClick = () => onClick(data); + + if (!east || !north) { + return null; + } return ( <Marker - position={[lat, lon]} + position={[north, east]} icon={createPinIcon(isActive)} eventHandlers={{ click: handleClick, diff --git a/vis/js/templates/Geomap/Pin/types.ts b/vis/js/templates/Geomap/Pin/types.ts index c381eae18..a7a136f70 100644 --- a/vis/js/templates/Geomap/Pin/types.ts +++ b/vis/js/templates/Geomap/Pin/types.ts @@ -1,7 +1,7 @@ +import { AllPossiblePapersType } from "@/js/types"; + export interface PinProps { - id: string; - lon: number; - lat: number; + data: AllPossiblePapersType; isActive: boolean; - onClick: (id: string) => void; + onClick: (data: AllPossiblePapersType) => void; } diff --git a/vis/js/templates/Geomap/index.tsx b/vis/js/templates/Geomap/index.tsx index 7d7db40bc..17e0ba6d2 100644 --- a/vis/js/templates/Geomap/index.tsx +++ b/vis/js/templates/Geomap/index.tsx @@ -1,45 +1,44 @@ import "leaflet/dist/leaflet.css"; -import { FC, useCallback, useState } from "react"; +import { FC, useCallback } from "react"; import { MapContainer, TileLayer } from "react-leaflet"; -import { useSelector } from "react-redux"; +import { useDispatch, useSelector } from "react-redux"; -import { State } from "@/js/types"; -import { getCoordinatesFromPaper } from "@/js/utils/coordinates"; +import { selectPaper } from "@/js/actions"; +import { AllPossiblePapersType, State } from "@/js/types"; import { OPTIONS } from "./options"; import { Pin } from "./Pin"; -const { map, tileLayer } = OPTIONS; +const { MAP, LAYER } = OPTIONS; -const getMesocosmsData = (state: State) => state.data.list; +const getItemsData = (state: State) => state.data.list; +const getSelectedItemId = (state: State) => state.selectedPaper?.safeId; export const Geomap: FC = () => { - const [selectedPinId, setSelectedPinId] = useState<string | null>(null); - const mesocosms = useSelector(getMesocosmsData); - - const handlePinClick = useCallback((id: string) => { - setSelectedPinId(id); - }, []); + const items = useSelector(getItemsData); + const selectedItemId = useSelector(getSelectedItemId); + const handleItemSelect = useDispatch(); + + const handlePinClick = useCallback( + (data: AllPossiblePapersType) => { + handleItemSelect(selectPaper(data)); + }, + [handleItemSelect], + ); return ( - <MapContainer {...map} className="geomap_container"> - <TileLayer {...tileLayer} /> - {mesocosms.map((data) => { + <MapContainer {...MAP} className="geomap_container"> + <TileLayer {...LAYER} /> + {items.map((data) => { const { safe_id: id } = data; - const { east, north } = getCoordinatesFromPaper(data); - - if (!east || !north) { - return null; - } + const isActive = selectedItemId === id; return ( <Pin - key={id} - id={id} - lon={east} - lat={north} - isActive={selectedPinId === id} + key={id + isActive} + data={data} + isActive={isActive} onClick={handlePinClick} /> ); diff --git a/vis/js/templates/Geomap/options.ts b/vis/js/templates/Geomap/options.ts index 92d9a469d..2c3f2cde5 100644 --- a/vis/js/templates/Geomap/options.ts +++ b/vis/js/templates/Geomap/options.ts @@ -1,7 +1,7 @@ import { Options } from "./types"; export const OPTIONS: Options = { - map: { + MAP: { center: [48.216651235748074, 16.39589688527869], zoom: 4, minZoom: 2, @@ -12,7 +12,7 @@ export const OPTIONS: Options = { maxBoundsViscosity: 1.0, worldCopyJump: true, }, - tileLayer: { + LAYER: { attribution: "© OpenStreetMap contributors", url: "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", }, diff --git a/vis/js/templates/Geomap/types.ts b/vis/js/templates/Geomap/types.ts index 79c42bf49..5edf87aec 100644 --- a/vis/js/templates/Geomap/types.ts +++ b/vis/js/templates/Geomap/types.ts @@ -15,6 +15,6 @@ interface TileLayer { } export interface Options { - map: Map; - tileLayer: TileLayer; + MAP: Map; + LAYER: TileLayer; } diff --git a/vis/js/templates/listentry/Abstract.tsx b/vis/js/templates/listentry/Abstract.tsx index 6ffcc8540..23dded8cd 100644 --- a/vis/js/templates/listentry/Abstract.tsx +++ b/vis/js/templates/listentry/Abstract.tsx @@ -1,12 +1,13 @@ import React, { FC } from "react"; import { connect } from "react-redux"; -import { useLocalizationContext } from "../../components/LocalizationProvider"; + import Highlight from "../../components/Highlight"; +import { useLocalizationContext } from "../../components/LocalizationProvider"; import { SelectedPaper, State } from "../../types"; interface AbstractProps { text: string; - isSelected: SelectedPaper; + isSelected: SelectedPaper | null; } const Abstract: FC<AbstractProps> = ({ text, isSelected }) => { diff --git a/vis/js/types/state/index.ts b/vis/js/types/state/index.ts index f1c165c81..415409a8b 100644 --- a/vis/js/types/state/index.ts +++ b/vis/js/types/state/index.ts @@ -27,7 +27,7 @@ export interface State { q_advanced: slices.QueryAdvanced; query: slices.Query; selectedBubble: slices.SelectedBubble; - selectedPaper: slices.SelectedPaper; + selectedPaper: slices.SelectedPaper | null; service: ServiceType; streamgraph: slices.Streamgraph; timespan: string; diff --git a/vis/stylesheets/modules/_geomap.scss b/vis/stylesheets/modules/_geomap.scss index c3bfb34af..55c532808 100644 --- a/vis/stylesheets/modules/_geomap.scss +++ b/vis/stylesheets/modules/_geomap.scss @@ -10,6 +10,7 @@ } .marker-shape { + cursor: pointer; width: 22px; height: 22px; background-color: #000; @@ -19,13 +20,8 @@ transition: 200ms ease; } -.custom-marker:hover .marker-shape { - scale: 1.2; - background-color: #007bff; -} - +.custom-marker:hover .marker-shape, .custom-marker.selected .marker-shape { - scale: 1.2; background-color: #007bff; } From 52666d012c0d0308b806b7b379eab790045e2ba8 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Tue, 28 Oct 2025 15:09:51 +0100 Subject: [PATCH 098/149] refactor: change name of the flag --- server/workers/build_docker_images.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/workers/build_docker_images.sh b/server/workers/build_docker_images.sh index 430ccb4cb..7210499f0 100755 --- a/server/workers/build_docker_images.sh +++ b/server/workers/build_docker_images.sh @@ -19,8 +19,8 @@ for service in ${services[@]}; do echo "Building $service" echo "" - # Checks that the --platform-linux flag has been passed and determines the necessary docker build command - if [[ "$1" == "--platform-linux" ]]; then + # Checks that the --build-for-linux flag has been passed and determines the necessary docker build command + if [[ "$1" == "--build-for-linux" ]]; then echo "Building services with version --platform linux/amd64" docker build --platform linux/amd64 -f "$SCRIPT_DIR/../workers/$service/Dockerfile" -t "$service:$service_version" "$SCRIPT_DIR/../" else From 75947a228636ccec33e631accbdd5328ad93cdd3 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Thu, 30 Oct 2025 09:02:39 +0100 Subject: [PATCH 099/149] feat: search using the location information --- vis/js/utils/data.ts | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/vis/js/utils/data.ts b/vis/js/utils/data.ts index 953fa4a32..b0e80db6b 100644 --- a/vis/js/utils/data.ts +++ b/vis/js/utils/data.ts @@ -1,14 +1,15 @@ // @ts-nocheck -import { GEOMAP_MODE } from "../reducers/chartType"; -import { isNonTextDocument } from "../templates/Paper"; -import { checkIsEmptyString, stringCompare } from "./string"; import { AllPossiblePapersType, - Config, AquanaviPaper, + Config, GeographicalData, } from "@js/types"; +import { GEOMAP_MODE } from "../reducers/chartType"; +import { isNonTextDocument } from "../templates/Paper"; +import { checkIsEmptyString, stringCompare } from "./string"; + /** * Filters the input data according to the provided settings. * @param {Array} data input array that contains papers @@ -111,8 +112,8 @@ const SEARCHED_PROPS = [ * * @returns {Function} filtering function that returns true if paper contains all the searched keywords */ -const getWordFilterFunction = (searchedKeywords) => { - return (paper) => { +const getWordFilterFunction = (searchedKeywords: string[]) => { + return (paper: AllPossiblePapersType) => { const paperKeywords = SEARCHED_PROPS.map((prop) => getPropertyOrEmptyString(paper, prop), ); @@ -132,6 +133,15 @@ const getWordFilterFunction = (searchedKeywords) => { paperKeywords.push("file"); } + if ("geographicalData" in paper && paper.geographicalData) { + const { country } = paper.geographicalData; + + if (country) { + const formattedCountry = country.toLowerCase(); + paperKeywords.push(formattedCountry); + } + } + const paperString = paperKeywords.join(" "); return !searchedKeywords.some((keyword) => !paperString.includes(keyword)); From 71752746707615d666d79141251a3d7cd5fc35d2 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Thu, 30 Oct 2025 09:07:24 +0100 Subject: [PATCH 100/149] feat: search for pins on the map --- vis/js/templates/Geomap/index.tsx | 25 ++++++++++++++++--------- vis/js/templates/Geomap/selectors.ts | 21 +++++++++++++++++++++ 2 files changed, 37 insertions(+), 9 deletions(-) create mode 100644 vis/js/templates/Geomap/selectors.ts diff --git a/vis/js/templates/Geomap/index.tsx b/vis/js/templates/Geomap/index.tsx index 17e0ba6d2..967da8d03 100644 --- a/vis/js/templates/Geomap/index.tsx +++ b/vis/js/templates/Geomap/index.tsx @@ -5,21 +5,28 @@ import { MapContainer, TileLayer } from "react-leaflet"; import { useDispatch, useSelector } from "react-redux"; import { selectPaper } from "@/js/actions"; -import { AllPossiblePapersType, State } from "@/js/types"; +import { AllPossiblePapersType } from "@/js/types"; +import { filterData } from "@/js/utils/data"; import { OPTIONS } from "./options"; import { Pin } from "./Pin"; +import * as selectors from "./selectors"; const { MAP, LAYER } = OPTIONS; -const getItemsData = (state: State) => state.data.list; -const getSelectedItemId = (state: State) => state.selectedPaper?.safeId; - export const Geomap: FC = () => { - const items = useSelector(getItemsData); - const selectedItemId = useSelector(getSelectedItemId); + const data = useSelector(selectors.getData); + const selectedItemId = useSelector(selectors.getSelectedItemId); + const searchSettings = useSelector(selectors.getSearchSettings); + const filterSettings = useSelector(selectors.getSearchFilterSettings); const handleItemSelect = useDispatch(); + const filteredData: AllPossiblePapersType[] = filterData( + data, + searchSettings, + filterSettings, + ); + const handlePinClick = useCallback( (data: AllPossiblePapersType) => { handleItemSelect(selectPaper(data)); @@ -30,14 +37,14 @@ export const Geomap: FC = () => { return ( <MapContainer {...MAP} className="geomap_container"> <TileLayer {...LAYER} /> - {items.map((data) => { - const { safe_id: id } = data; + {filteredData.map((item) => { + const { safe_id: id } = item; const isActive = selectedItemId === id; return ( <Pin key={id + isActive} - data={data} + data={item} isActive={isActive} onClick={handlePinClick} /> diff --git a/vis/js/templates/Geomap/selectors.ts b/vis/js/templates/Geomap/selectors.ts new file mode 100644 index 000000000..593e4be25 --- /dev/null +++ b/vis/js/templates/Geomap/selectors.ts @@ -0,0 +1,21 @@ +import { STREAMGRAPH_MODE } from "@/js/reducers/chartType"; +import { State } from "@/js/types"; + +export const getData = (state: State) => state.data.list; + +export const getSelectedItemId = (state: State) => state.selectedPaper?.safeId; + +export const getSearchSettings = (state: State) => ({ + value: state.list.searchValue, +}); + +export const getSearchFilterSettings = (state: State) => ({ + value: state.list.filterValue, + field: state.list.filterField, + zoomed: state.zoom, + area: state.selectedBubble ? state.selectedBubble.uri : null, + paper: null, + isStreamgraph: state.chartType === STREAMGRAPH_MODE, + title: state.selectedBubble ? state.selectedBubble.title : null, + docIds: state.selectedBubble ? state.selectedBubble.docIds : null, +}); From 7ed01c5da2c410957a48fbb0dd5bce2e70280c2c Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Thu, 30 Oct 2025 10:12:18 +0100 Subject: [PATCH 101/149] refactor: data filtering and searching in the separate hook --- vis/hooks/useData.ts | 51 ++++++++++++++++++++++++++++ vis/js/templates/Geomap/index.tsx | 43 ++++++++++------------- vis/js/templates/Geomap/selectors.ts | 18 ---------- 3 files changed, 69 insertions(+), 43 deletions(-) create mode 100644 vis/hooks/useData.ts diff --git a/vis/hooks/useData.ts b/vis/hooks/useData.ts new file mode 100644 index 000000000..32702ad89 --- /dev/null +++ b/vis/hooks/useData.ts @@ -0,0 +1,51 @@ +/** + * The hook allows to access filtered data or filtered and sorted data, + * which can then be used in the component without creating selectors + * and calling filter and sorting functions. + */ + +import { useSelector } from "react-redux"; + +import { STREAMGRAPH_MODE } from "@/js/reducers/chartType"; +import { AllPossiblePapersType, State } from "@/js/types"; +import { filterData, sortData } from "@/js/utils/data"; + +const getData = (state: State) => state.data.list; + +const getSearchSettings = (state: State) => ({ + value: state.list.searchValue, +}); + +const getSortSettings = (state: State) => ({ + value: state.list.sortValue, +}); + +const getSearchFilterSettings = (state: State) => ({ + value: state.list.filterValue, + field: state.list.filterField, + zoomed: state.zoom, + area: state.selectedBubble ? state.selectedBubble.uri : null, + paper: null, + isStreamgraph: state.chartType === STREAMGRAPH_MODE, + title: state.selectedBubble ? state.selectedBubble.title : null, + docIds: state.selectedBubble ? state.selectedBubble.docIds : null, +}); + +export const useData = (isFilter: boolean = false, isSort: boolean = false) => { + const initialData = useSelector(getData); + const searchSettings = useSelector(getSearchSettings); + const sortSettings = useSelector(getSortSettings); + const filterSettings = useSelector(getSearchFilterSettings); + + let filteredData: AllPossiblePapersType[] | null = null; + if (isFilter) { + filteredData = filterData(initialData, searchSettings, filterSettings); + } + + let filteredAndSortedData: AllPossiblePapersType[] | null = null; + if (isSort) { + filteredAndSortedData = sortData(filteredData, sortSettings); + } + + return { initialData, filteredData, filteredAndSortedData }; +}; diff --git a/vis/js/templates/Geomap/index.tsx b/vis/js/templates/Geomap/index.tsx index 967da8d03..8e7521cae 100644 --- a/vis/js/templates/Geomap/index.tsx +++ b/vis/js/templates/Geomap/index.tsx @@ -4,29 +4,21 @@ import { FC, useCallback } from "react"; import { MapContainer, TileLayer } from "react-leaflet"; import { useDispatch, useSelector } from "react-redux"; +import { useData } from "@/hooks/useData"; import { selectPaper } from "@/js/actions"; import { AllPossiblePapersType } from "@/js/types"; -import { filterData } from "@/js/utils/data"; import { OPTIONS } from "./options"; import { Pin } from "./Pin"; -import * as selectors from "./selectors"; +import { getSelectedItemId } from "./selectors"; const { MAP, LAYER } = OPTIONS; export const Geomap: FC = () => { - const data = useSelector(selectors.getData); - const selectedItemId = useSelector(selectors.getSelectedItemId); - const searchSettings = useSelector(selectors.getSearchSettings); - const filterSettings = useSelector(selectors.getSearchFilterSettings); + const { filteredData } = useData(true); + const selectedItemId = useSelector(getSelectedItemId); const handleItemSelect = useDispatch(); - const filteredData: AllPossiblePapersType[] = filterData( - data, - searchSettings, - filterSettings, - ); - const handlePinClick = useCallback( (data: AllPossiblePapersType) => { handleItemSelect(selectPaper(data)); @@ -37,19 +29,20 @@ export const Geomap: FC = () => { return ( <MapContainer {...MAP} className="geomap_container"> <TileLayer {...LAYER} /> - {filteredData.map((item) => { - const { safe_id: id } = item; - const isActive = selectedItemId === id; - - return ( - <Pin - key={id + isActive} - data={item} - isActive={isActive} - onClick={handlePinClick} - /> - ); - })} + {filteredData && + filteredData.map((item) => { + const { safe_id: id } = item; + const isActive = selectedItemId === id; + + return ( + <Pin + key={id + isActive} + data={item} + isActive={isActive} + onClick={handlePinClick} + /> + ); + })} </MapContainer> ); }; diff --git a/vis/js/templates/Geomap/selectors.ts b/vis/js/templates/Geomap/selectors.ts index 593e4be25..ed24b92a3 100644 --- a/vis/js/templates/Geomap/selectors.ts +++ b/vis/js/templates/Geomap/selectors.ts @@ -1,21 +1,3 @@ -import { STREAMGRAPH_MODE } from "@/js/reducers/chartType"; import { State } from "@/js/types"; -export const getData = (state: State) => state.data.list; - export const getSelectedItemId = (state: State) => state.selectedPaper?.safeId; - -export const getSearchSettings = (state: State) => ({ - value: state.list.searchValue, -}); - -export const getSearchFilterSettings = (state: State) => ({ - value: state.list.filterValue, - field: state.list.filterField, - zoomed: state.zoom, - area: state.selectedBubble ? state.selectedBubble.uri : null, - paper: null, - isStreamgraph: state.chartType === STREAMGRAPH_MODE, - title: state.selectedBubble ? state.selectedBubble.title : null, - docIds: state.selectedBubble ? state.selectedBubble.docIds : null, -}); From 8e3fb21fc4bf7d7251eea37b7e381a0c3dcd4bf2 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Thu, 30 Oct 2025 14:44:13 +0100 Subject: [PATCH 102/149] feat: pin changes color to blue while its title hovered --- vis/js/actions/index.ts | 5 +++++ vis/js/reducers/data.ts | 23 ++++++++++++++------- vis/js/templates/Geomap/index.tsx | 5 +++-- vis/js/templates/Geomap/selectors.ts | 2 ++ vis/js/templates/listentry/Title.tsx | 31 ++++++++++++++++++++++++---- vis/js/types/state/slices/data.ts | 1 + vis/js/utils/eventhandlers.ts | 16 +++++++------- 7 files changed, 63 insertions(+), 20 deletions(-) diff --git a/vis/js/actions/index.ts b/vis/js/actions/index.ts index 67d077960..033203933 100644 --- a/vis/js/actions/index.ts +++ b/vis/js/actions/index.ts @@ -104,6 +104,11 @@ export const selectPaper = (paper: any, isFromBackButton = false) => ({ isFromBackButton, }); +export const hoverItem = (id: string | null) => ({ + type: "HOVER_ITEM", + safeId: id, +}); + export const deselectPaper = (isFromBackButton = false) => ({ type: "DESELECT_PAPER", isFromBackButton, diff --git a/vis/js/reducers/data.ts b/vis/js/reducers/data.ts index 3b3f12093..241d3ba4b 100644 --- a/vis/js/reducers/data.ts +++ b/vis/js/reducers/data.ts @@ -1,11 +1,11 @@ import d3 from "d3"; -import { getDiameterScale, getResizedScale } from "../utils/scale"; import { getValueOrZero } from "../utils/data"; +import { getDiameterScale, getResizedScale } from "../utils/scale"; const data = ( state = { list: [], options: {}, size: null } as any, - action: any + action: any, ) => { if (action.canceled) { return state; @@ -23,6 +23,7 @@ const data = ( paperHeightFactor: action.configObject.paper_height_factor, isStreamgraph: action.configObject.is_streamgraph, visualizationId: action.contextObject.id, + hoveredItemId: null, }; return { list: action.papers, options, size: action.chartSize }; @@ -38,12 +39,20 @@ const data = ( state.list, state.size, action.chartSize, - state.options + state.options, ); } return { ...state, list, size: action.chartSize }; } + case "HOVER_ITEM": + return { + ...state, + options: { + ...state.options, + hoveredItemId: action.safeId, + }, + }; case "APPLY_FORCE_PAPERS": return { ...state, list: action.dataArray }; default: @@ -57,14 +66,14 @@ const resizePapers = ( papers: any[], currentSize: number, newSize: number, - options: any + options: any, ) => { const resizedPapers = papers.slice(0); - let coordsScale = getResizedScale(currentSize, newSize); + const coordsScale = getResizedScale(currentSize, newSize); - let diameters = resizedPapers.map((e) => getValueOrZero(e.citation_count)); - let dScale = getDiameterScale(d3.extent(diameters), newSize, options); + const diameters = resizedPapers.map((e) => getValueOrZero(e.citation_count)); + const dScale = getDiameterScale(d3.extent(diameters), newSize, options); resizedPapers.forEach((paper: any) => { paper.x = coordsScale(paper.x); diff --git a/vis/js/templates/Geomap/index.tsx b/vis/js/templates/Geomap/index.tsx index 8e7521cae..3a0e198b5 100644 --- a/vis/js/templates/Geomap/index.tsx +++ b/vis/js/templates/Geomap/index.tsx @@ -10,13 +10,14 @@ import { AllPossiblePapersType } from "@/js/types"; import { OPTIONS } from "./options"; import { Pin } from "./Pin"; -import { getSelectedItemId } from "./selectors"; +import { getHoveredItemId, getSelectedItemId } from "./selectors"; const { MAP, LAYER } = OPTIONS; export const Geomap: FC = () => { const { filteredData } = useData(true); const selectedItemId = useSelector(getSelectedItemId); + const hoveredItemId = useSelector(getHoveredItemId); const handleItemSelect = useDispatch(); const handlePinClick = useCallback( @@ -32,7 +33,7 @@ export const Geomap: FC = () => { {filteredData && filteredData.map((item) => { const { safe_id: id } = item; - const isActive = selectedItemId === id; + const isActive = selectedItemId === id || hoveredItemId === id; return ( <Pin diff --git a/vis/js/templates/Geomap/selectors.ts b/vis/js/templates/Geomap/selectors.ts index ed24b92a3..93114a576 100644 --- a/vis/js/templates/Geomap/selectors.ts +++ b/vis/js/templates/Geomap/selectors.ts @@ -1,3 +1,5 @@ import { State } from "@/js/types"; export const getSelectedItemId = (state: State) => state.selectedPaper?.safeId; +export const getHoveredItemId = (state: State) => + state.data.options.hoveredItemId; diff --git a/vis/js/templates/listentry/Title.tsx b/vis/js/templates/listentry/Title.tsx index 5bb54c933..c47a04cea 100644 --- a/vis/js/templates/listentry/Title.tsx +++ b/vis/js/templates/listentry/Title.tsx @@ -1,12 +1,13 @@ -import React, { FC } from "react"; +import { FC } from "react"; import { connect } from "react-redux"; + import Highlight from "../../components/Highlight"; import { useLocalizationContext } from "../../components/LocalizationProvider"; -import { STREAMGRAPH_MODE } from "../../reducers/chartType"; +import { GEOMAP_MODE, STREAMGRAPH_MODE } from "../../reducers/chartType"; +import { AllPossiblePapersType, State, VisualizationTypes } from "../../types"; import { getDateFromTimestamp } from "../../utils/dates"; import { mapDispatchToListEntriesProps } from "../../utils/eventhandlers"; import useMatomo from "../../utils/useMatomo"; -import { AllPossiblePapersType, State } from "../../types"; const MAX_TITLE_LENGTH = 164; @@ -14,21 +15,26 @@ interface TitleProps { disableClicks: boolean; isSelected: boolean; isStreamgraph: boolean; + visualizationType: VisualizationTypes; paper: AllPossiblePapersType; handleSelectPaper: (paper: AllPossiblePapersType) => void; handleSelectPaperWithZoom: (paper: AllPossiblePapersType) => void; + handleMouseEnterOnTitle: (id: string | null) => void; } const Title: FC<TitleProps> = ({ paper, isStreamgraph, + visualizationType, disableClicks, isSelected, handleSelectPaper, handleSelectPaperWithZoom, + handleMouseEnterOnTitle, }) => { const loc = useLocalizationContext(); const { trackEvent } = useMatomo(); + const isGeoMap = visualizationType === GEOMAP_MODE; const handleClick = () => { if (disableClicks) { @@ -44,6 +50,17 @@ const Title: FC<TitleProps> = ({ trackEvent("List document", "Select paper", "List title"); }; + const handleMouseEnter = () => { + handleMouseEnterOnTitle(paper.safe_id); + }; + + const handleMouseLeave = () => { + handleMouseEnterOnTitle(null); + }; + + const mouseEnterHandler = isGeoMap ? handleMouseEnter : undefined; + const mouseLeaveHandler = isGeoMap ? handleMouseLeave : undefined; + const rawTitle = paper.title ? paper.title : loc.default_paper_title; const formattedDate = ` (${formatPaperDate(paper.year)})`; @@ -52,7 +69,12 @@ const Title: FC<TitleProps> = ({ : formatTitle(rawTitle, MAX_TITLE_LENGTH - formattedDate.length); return ( - <div className="list_title" onClick={handleClick}> + <div + className="list_title" + onClick={handleClick} + onMouseEnter={mouseEnterHandler} + onMouseLeave={mouseLeaveHandler} + > <a id="paper_list_title" title={rawTitle + (paper.year ? formattedDate : "")} @@ -66,6 +88,7 @@ const Title: FC<TitleProps> = ({ const mapStateToProps = (state: State) => ({ isStreamgraph: state.chartType === STREAMGRAPH_MODE, + visualizationType: state.chartType, disableClicks: state.list.disableClicks, isSelected: !!state.selectedPaper, }); diff --git a/vis/js/types/state/slices/data.ts b/vis/js/types/state/slices/data.ts index 689718f6b..01c70929d 100644 --- a/vis/js/types/state/slices/data.ts +++ b/vis/js/types/state/slices/data.ts @@ -16,4 +16,5 @@ interface Options { paperWidthFactor: number; referenceSize: number; visualizationId: string; + hoveredItemId: string | null; } diff --git a/vis/js/utils/eventhandlers.ts b/vis/js/utils/eventhandlers.ts index 01fa04367..a2f4a9042 100644 --- a/vis/js/utils/eventhandlers.ts +++ b/vis/js/utils/eventhandlers.ts @@ -1,17 +1,18 @@ -import { AllPossiblePapersType, Paper } from "../types"; import { - zoomIn, - zoomOut, - highlightArea, - showPreview, - selectPaper, deselectPaper, - stopAnimation, + highlightArea, hoverBubble, + hoverItem, hoverPaper, + selectPaper, showCitePaper, showExportPaper, + showPreview, + stopAnimation, + zoomIn, + zoomOut, } from "../actions"; +import { AllPossiblePapersType, Paper } from "../types"; /** * Returns mapDispatchToProps function used in *ListEntries.js components. @@ -48,6 +49,7 @@ export const mapDispatchToListEntriesProps = (dispatch: any) => ({ dispatch(showCitePaper(paper)), handleExportClick: (paper: AllPossiblePapersType) => dispatch(showExportPaper(paper)), + handleMouseEnterOnTitle: (id: string | null) => dispatch(hoverItem(id)), }); /** From 6b22b2d29dd8282a72c6f12cb78d90b8a16c0e5d Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Thu, 30 Oct 2025 14:45:30 +0100 Subject: [PATCH 103/149] bugfix: missing configuration in the test case --- vis/test/store/data.test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vis/test/store/data.test.js b/vis/test/store/data.test.js index cc3fb00d4..37168037c 100644 --- a/vis/test/store/data.test.js +++ b/vis/test/store/data.test.js @@ -1,7 +1,6 @@ -import { expect, describe, it } from "vitest"; +import { describe, expect, it } from "vitest"; import { initializeStore, updateDimensions } from "../../js/actions"; - import reducer from "../../js/reducers/data"; describe("data state", () => { @@ -73,6 +72,7 @@ describe("data state", () => { paperMinScale: undefined, paperWidthFactor: undefined, referenceSize: undefined, + hoveredItemId: null, }, size: 500, }); From db447baa23e4619026bb32d497b9a1ba6e85d7ed Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Tue, 4 Nov 2025 09:44:25 +0100 Subject: [PATCH 104/149] feat: page scroll disabling after clicking on the zomm control --- vis/js/templates/Geomap/options.ts | 1 + vis/js/templates/Geomap/types.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/vis/js/templates/Geomap/options.ts b/vis/js/templates/Geomap/options.ts index 2c3f2cde5..208aedcc3 100644 --- a/vis/js/templates/Geomap/options.ts +++ b/vis/js/templates/Geomap/options.ts @@ -11,6 +11,7 @@ export const OPTIONS: Options = { ], maxBoundsViscosity: 1.0, worldCopyJump: true, + keyboard: false, }, LAYER: { attribution: "© OpenStreetMap contributors", diff --git a/vis/js/templates/Geomap/types.ts b/vis/js/templates/Geomap/types.ts index 5edf87aec..c92cf8c8a 100644 --- a/vis/js/templates/Geomap/types.ts +++ b/vis/js/templates/Geomap/types.ts @@ -7,6 +7,7 @@ interface Map { maxBounds: LatLngBoundsExpression; maxBoundsViscosity: number; worldCopyJump: boolean; + keyboard: boolean; } interface TileLayer { From dcb522d8723584fef38df4f9651f0d95677b27e4 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Tue, 4 Nov 2025 09:55:14 +0100 Subject: [PATCH 105/149] feat: the zoom control in the right bottom of the map --- vis/js/templates/Geomap/index.tsx | 11 ++++++----- vis/js/templates/Geomap/options.ts | 4 ++++ vis/js/templates/Geomap/types.ts | 6 ++++++ 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/vis/js/templates/Geomap/index.tsx b/vis/js/templates/Geomap/index.tsx index 3a0e198b5..8f5cacdbe 100644 --- a/vis/js/templates/Geomap/index.tsx +++ b/vis/js/templates/Geomap/index.tsx @@ -1,7 +1,7 @@ import "leaflet/dist/leaflet.css"; import { FC, useCallback } from "react"; -import { MapContainer, TileLayer } from "react-leaflet"; +import { MapContainer, TileLayer, ZoomControl } from "react-leaflet"; import { useDispatch, useSelector } from "react-redux"; import { useData } from "@/hooks/useData"; @@ -12,24 +12,25 @@ import { OPTIONS } from "./options"; import { Pin } from "./Pin"; import { getHoveredItemId, getSelectedItemId } from "./selectors"; -const { MAP, LAYER } = OPTIONS; +const { MAP, LAYER, ZOOM_CONTROL } = OPTIONS; export const Geomap: FC = () => { const { filteredData } = useData(true); const selectedItemId = useSelector(getSelectedItemId); const hoveredItemId = useSelector(getHoveredItemId); - const handleItemSelect = useDispatch(); + const dispatch = useDispatch(); const handlePinClick = useCallback( (data: AllPossiblePapersType) => { - handleItemSelect(selectPaper(data)); + dispatch(selectPaper(data)); }, - [handleItemSelect], + [dispatch], ); return ( <MapContainer {...MAP} className="geomap_container"> <TileLayer {...LAYER} /> + <ZoomControl {...ZOOM_CONTROL} /> {filteredData && filteredData.map((item) => { const { safe_id: id } = item; diff --git a/vis/js/templates/Geomap/options.ts b/vis/js/templates/Geomap/options.ts index 208aedcc3..4e2683c2b 100644 --- a/vis/js/templates/Geomap/options.ts +++ b/vis/js/templates/Geomap/options.ts @@ -12,9 +12,13 @@ export const OPTIONS: Options = { maxBoundsViscosity: 1.0, worldCopyJump: true, keyboard: false, + zoomControl: false, }, LAYER: { attribution: "© OpenStreetMap contributors", url: "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", }, + ZOOM_CONTROL: { + position: "bottomright", + }, }; diff --git a/vis/js/templates/Geomap/types.ts b/vis/js/templates/Geomap/types.ts index c92cf8c8a..657aad78d 100644 --- a/vis/js/templates/Geomap/types.ts +++ b/vis/js/templates/Geomap/types.ts @@ -8,6 +8,7 @@ interface Map { maxBoundsViscosity: number; worldCopyJump: boolean; keyboard: boolean; + zoomControl: boolean; } interface TileLayer { @@ -15,7 +16,12 @@ interface TileLayer { url: string; } +interface ZoomControl { + position?: "topleft" | "topright" | "bottomleft" | "bottomright"; +} + export interface Options { MAP: Map; LAYER: TileLayer; + ZOOM_CONTROL: ZoomControl; } From cbbb10121e6be1482f2e28c6f6c40128eab58e09 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Tue, 4 Nov 2025 09:56:47 +0100 Subject: [PATCH 106/149] refactor: layer index of the map component --- vis/stylesheets/modules/_geomap.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/vis/stylesheets/modules/_geomap.scss b/vis/stylesheets/modules/_geomap.scss index 55c532808..f19f912cd 100644 --- a/vis/stylesheets/modules/_geomap.scss +++ b/vis/stylesheets/modules/_geomap.scss @@ -3,6 +3,7 @@ .geomap_container { height: 100vh; width: 100%; + z-index: 0; } .custom-marker { From 0931009dafe33cc643922d2609851bdf7b1fb484 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Tue, 4 Nov 2025 10:24:33 +0100 Subject: [PATCH 107/149] refactor: better map center --- vis/js/templates/Geomap/options.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vis/js/templates/Geomap/options.ts b/vis/js/templates/Geomap/options.ts index 4e2683c2b..cd080c885 100644 --- a/vis/js/templates/Geomap/options.ts +++ b/vis/js/templates/Geomap/options.ts @@ -2,7 +2,7 @@ import { Options } from "./types"; export const OPTIONS: Options = { MAP: { - center: [48.216651235748074, 16.39589688527869], + center: [45.1, 4.1], zoom: 4, minZoom: 2, maxBounds: [ From 8420ca8aa67e517908c2e19d4d084bc85e631965 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Tue, 4 Nov 2025 12:51:19 +0100 Subject: [PATCH 108/149] feat: layer switcher feat: layer switching in the separate component --- .../templates/Geomap/LayersSwitcher/config.ts | 19 +++++++++++++++++++ .../templates/Geomap/LayersSwitcher/index.tsx | 14 ++++++++++++++ .../Geomap/{options.ts => config.ts} | 9 +++------ vis/js/templates/Geomap/index.tsx | 9 +++++---- vis/js/templates/Geomap/types.ts | 9 ++------- 5 files changed, 43 insertions(+), 17 deletions(-) create mode 100644 vis/js/templates/Geomap/LayersSwitcher/config.ts create mode 100644 vis/js/templates/Geomap/LayersSwitcher/index.tsx rename vis/js/templates/Geomap/{options.ts => config.ts} (58%) diff --git a/vis/js/templates/Geomap/LayersSwitcher/config.ts b/vis/js/templates/Geomap/LayersSwitcher/config.ts new file mode 100644 index 000000000..2f2a17513 --- /dev/null +++ b/vis/js/templates/Geomap/LayersSwitcher/config.ts @@ -0,0 +1,19 @@ +export const CONFIG = [ + { + name: "OpenStreetMap", + attribution: "© OpenStreetMap contributors", + url: "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", + }, + { + name: "OpenStreetMap.HOT", + attribution: + "© OpenStreetMap contributors, Tiles style by Humanitarian OpenStreetMap Team hosted by OpenStreetMap France", + url: "https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png", + }, + { + name: "OpenTopoMap", + attribution: + "Map data: © OpenStreetMap contributors, SRTM | Map style: © OpenTopoMap (CC-BY-SA)", + url: "https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png", + }, +]; diff --git a/vis/js/templates/Geomap/LayersSwitcher/index.tsx b/vis/js/templates/Geomap/LayersSwitcher/index.tsx new file mode 100644 index 000000000..203b4ebae --- /dev/null +++ b/vis/js/templates/Geomap/LayersSwitcher/index.tsx @@ -0,0 +1,14 @@ +import { FC } from "react"; +import { LayersControl, TileLayer } from "react-leaflet"; + +import { CONFIG } from "./config"; + +export const LayersSwitcher: FC = () => ( + <LayersControl position="topright"> + {CONFIG.map(({ name, url, attribution }, index) => ( + <LayersControl.BaseLayer key={name} checked={index === 0} name={name}> + <TileLayer attribution={attribution} url={url} /> + </LayersControl.BaseLayer> + ))} + </LayersControl> +); diff --git a/vis/js/templates/Geomap/options.ts b/vis/js/templates/Geomap/config.ts similarity index 58% rename from vis/js/templates/Geomap/options.ts rename to vis/js/templates/Geomap/config.ts index cd080c885..2f6219698 100644 --- a/vis/js/templates/Geomap/options.ts +++ b/vis/js/templates/Geomap/config.ts @@ -1,9 +1,10 @@ -import { Options } from "./types"; +import { Config } from "./types"; -export const OPTIONS: Options = { +export const CONFIG: Config = { MAP: { center: [45.1, 4.1], zoom: 4, + maxZoom: 17, minZoom: 2, maxBounds: [ [-85, -180], @@ -14,10 +15,6 @@ export const OPTIONS: Options = { keyboard: false, zoomControl: false, }, - LAYER: { - attribution: "© OpenStreetMap contributors", - url: "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", - }, ZOOM_CONTROL: { position: "bottomright", }, diff --git a/vis/js/templates/Geomap/index.tsx b/vis/js/templates/Geomap/index.tsx index 8f5cacdbe..58f1d1ab1 100644 --- a/vis/js/templates/Geomap/index.tsx +++ b/vis/js/templates/Geomap/index.tsx @@ -1,18 +1,19 @@ import "leaflet/dist/leaflet.css"; import { FC, useCallback } from "react"; -import { MapContainer, TileLayer, ZoomControl } from "react-leaflet"; +import { MapContainer, ZoomControl } from "react-leaflet"; import { useDispatch, useSelector } from "react-redux"; import { useData } from "@/hooks/useData"; import { selectPaper } from "@/js/actions"; import { AllPossiblePapersType } from "@/js/types"; -import { OPTIONS } from "./options"; +import { CONFIG } from "./config"; +import { LayersSwitcher } from "./LayersSwitcher"; import { Pin } from "./Pin"; import { getHoveredItemId, getSelectedItemId } from "./selectors"; -const { MAP, LAYER, ZOOM_CONTROL } = OPTIONS; +const { MAP, ZOOM_CONTROL } = CONFIG; export const Geomap: FC = () => { const { filteredData } = useData(true); @@ -29,8 +30,8 @@ export const Geomap: FC = () => { return ( <MapContainer {...MAP} className="geomap_container"> - <TileLayer {...LAYER} /> <ZoomControl {...ZOOM_CONTROL} /> + <LayersSwitcher /> {filteredData && filteredData.map((item) => { const { safe_id: id } = item; diff --git a/vis/js/templates/Geomap/types.ts b/vis/js/templates/Geomap/types.ts index 657aad78d..1c7a0658a 100644 --- a/vis/js/templates/Geomap/types.ts +++ b/vis/js/templates/Geomap/types.ts @@ -4,6 +4,7 @@ interface Map { center: LatLngTuple; zoom: number; minZoom: number; + maxZoom: number; maxBounds: LatLngBoundsExpression; maxBoundsViscosity: number; worldCopyJump: boolean; @@ -11,17 +12,11 @@ interface Map { zoomControl: boolean; } -interface TileLayer { - attribution: string; - url: string; -} - interface ZoomControl { position?: "topleft" | "topright" | "bottomleft" | "bottomright"; } -export interface Options { +export interface Config { MAP: Map; - LAYER: TileLayer; ZOOM_CONTROL: ZoomControl; } From 613a91550140ff90bc4f4199cddf0b99d841ab2a Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Wed, 5 Nov 2025 09:36:35 +0100 Subject: [PATCH 109/149] feat: new title prefix for the geomap visualization --- vis/js/components/Heading.tsx | 48 ++++++++++++++-------------- vis/js/i18n/localization.ts | 3 ++ vis/js/reducers/heading.ts | 5 +++ vis/js/types/state/slices/heading.ts | 9 +++++- 4 files changed, 40 insertions(+), 25 deletions(-) diff --git a/vis/js/components/Heading.tsx b/vis/js/components/Heading.tsx index c842cd27f..77d427999 100644 --- a/vis/js/components/Heading.tsx +++ b/vis/js/components/Heading.tsx @@ -3,14 +3,13 @@ import React from "react"; import { connect } from "react-redux"; +import { STREAMGRAPH_MODE } from "../reducers/chartType"; import { BasicTitle, - ProjectTitle, CustomTitle, + ProjectTitle, StandardTitle, } from "../templates/headingtitles"; - -import { STREAMGRAPH_MODE } from "../reducers/chartType"; import { queryConcatenator } from "../utils/data"; const Heading = ({ @@ -22,7 +21,7 @@ const Heading = ({ streamgraph, q_advanced, service, - author + author, }) => { if (zoomed) { const label = streamgraph @@ -42,7 +41,7 @@ const Heading = ({ ); } - let queryString = queryConcatenator([query, q_advanced]); + const queryString = queryConcatenator([query, q_advanced]); return ( // html template starts here @@ -83,14 +82,14 @@ const renderTitle = (localization, query, headingParams, author, service) => { return <BasicTitle title={headingParams.presetTitle} />; } - let label = getHeadingLabel(headingParams.titleLabelType, localization); + const label = getHeadingLabel(headingParams.titleLabelType, localization); if (headingParams.titleStyle) { if (headingParams.titleStyle === "viper") { return renderViperTitle( headingParams.title, headingParams.acronym, - headingParams.projectId + headingParams.projectId, ); } @@ -103,7 +102,7 @@ const renderTitle = (localization, query, headingParams, author, service) => { headingParams.customTitle, label, query, - localization + localization, ); } @@ -116,8 +115,8 @@ const renderTitle = (localization, query, headingParams, author, service) => { } } - if (service === 'ORCID' && (author?.orcid_id || author?.author_name)) { - return renderOrcidTitle(author.orcid_id, author.author_name, label) + if (service === "ORCID" && (author?.orcid_id || author?.author_name)) { + return renderOrcidTitle(author.orcid_id, author.author_name, label); } return <StandardTitle label={label} title={query} />; @@ -126,24 +125,23 @@ const renderTitle = (localization, query, headingParams, author, service) => { return <BasicTitle title={localization.default_title} />; }; -const renderOrcidTitle = (orcidId: string, authorName: string, label: string) => { - const orcidTitle = [authorName, orcidId ? `(${orcidId})` : null].join(' ') +const renderOrcidTitle = ( + orcidId: string, + authorName: string, + label: string, +) => { + const orcidTitle = [authorName, orcidId ? `(${orcidId})` : null].join(" "); const shortTitle = sliceText(orcidTitle, MAX_LENGTH_ORCID); - return ( - <StandardTitle - label={label} - title={shortTitle} - /> - ); -} + return <StandardTitle label={label} title={shortTitle} />; +}; const renderViperTitle = (title, acronym, projectId) => { let titleText = title; if (typeof acronym === "string" && acronym !== "") { - titleText = acronym + " - " + title; + titleText = `${acronym} - ${title}`; } - let shortTitleText = sliceText(titleText, MAX_LENGTH_VIPER); + const shortTitleText = sliceText(titleText, MAX_LENGTH_VIPER); return ( <ProjectTitle @@ -178,7 +176,7 @@ const sliceText = (text, maxLength) => { return text; } - return text.slice(0, maxLength - 3) + "..."; + return `${text.slice(0, maxLength - 3)}...`; }; /** @@ -194,13 +192,15 @@ export const getHeadingLabel = (labelType, localization) => { return localization.streamgraph_label; case "keywordview-knowledgemap": return localization.overview_label; + case "geomap": + return localization.geomap_label; default: throw new Error(`Label of type '${labelType}' not supported.`); } }; const unescapeHTML = (string) => { - let entityMap = { + const entityMap = { "&": "&", "<": "<", ">": ">", @@ -216,6 +216,6 @@ const unescapeHTML = (string) => { /(&|<|>|"|"|'|/|`|=)/g, function (s) { return entityMap[s]; - } + }, ); }; diff --git a/vis/js/i18n/localization.ts b/vis/js/i18n/localization.ts index 4222b63af..dadd0e1c6 100644 --- a/vis/js/i18n/localization.ts +++ b/vis/js/i18n/localization.ts @@ -14,6 +14,7 @@ export interface Localization { streamgraph_label: string; overview_authors_label: string; streamgraph_authors_label: string; + geomap_label: string; custom_title_explanation: string; articles_label: string; most_recent_label: string; @@ -150,6 +151,7 @@ export const localization: { streamgraph_label: "Streamgraph of", overview_authors_label: "Knowledge Map of the works of", streamgraph_authors_label: "Streamgraph of the works of", + geomap_label: "Geo Map of", custom_title_explanation: "This is a custom title. Please see the info button for more information. Original query:", articles_label: "documents", @@ -248,6 +250,7 @@ export const localization: { streamgraph_label: "Streamgraph für", overview_authors_label: "Überblick über die Werke von", streamgraph_authors_label: "Streamgraph für die Werke von", + geomap_label: "Geo Map für", custom_title_explanation: "Dieser Titel wurde manuell geändert. Die Original-Suche lautet:", most_recent_label: "neueste", diff --git a/vis/js/reducers/heading.ts b/vis/js/reducers/heading.ts index cf98d442a..4332242cc 100644 --- a/vis/js/reducers/heading.ts +++ b/vis/js/reducers/heading.ts @@ -1,4 +1,5 @@ import { Config } from "../types"; +import { GEOMAP_MODE } from "./chartType"; const context = (state = {}, action: any) => { if (action.canceled) { @@ -56,6 +57,10 @@ const getTitleLabelType = (config: Config) => { return "keywordview-streamgraph"; } + if (config.visualization_type === GEOMAP_MODE) { + return "geomap"; + } + return "keywordview-knowledgemap"; }; diff --git a/vis/js/types/state/slices/heading.ts b/vis/js/types/state/slices/heading.ts index 71b90d24b..a49d5a68b 100644 --- a/vis/js/types/state/slices/heading.ts +++ b/vis/js/types/state/slices/heading.ts @@ -1,9 +1,16 @@ +type TitleLabelTypes = + | "authorview-streamgraph" + | "authorview-knowledgemap" + | "keywordview-streamgraph" + | "keywordview-knowledgemap" + | "geomap"; + export interface Heading { acronym: unknown; customTitle: unknown; presetTitle: string; projectId: unknown; title: unknown; - titleLabelType: string; + titleLabelType: TitleLabelTypes; titleStyle: string; } From 1af5c9d9ee740791b9f0a74e4dde5b38d314ad14 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Wed, 5 Nov 2025 09:58:40 +0100 Subject: [PATCH 110/149] refactor: Geomap component --- vis/hooks/useActiveDataItem.ts | 17 +++++++ .../templates/Geomap/LayersSwitcher/config.ts | 44 +++++++++------- .../templates/Geomap/LayersSwitcher/index.tsx | 18 ++++--- .../templates/Geomap/LayersSwitcher/types.ts | 13 +++++ .../Geomap/{ => Pins}/Pin/createPinIcon.ts | 0 .../templates/Geomap/{ => Pins}/Pin/index.tsx | 0 .../templates/Geomap/{ => Pins}/Pin/types.ts | 0 vis/js/templates/Geomap/Pins/index.tsx | 41 +++++++++++++++ vis/js/templates/Geomap/index.tsx | 51 ++++--------------- vis/js/templates/Geomap/selectors.ts | 5 -- 10 files changed, 117 insertions(+), 72 deletions(-) create mode 100644 vis/hooks/useActiveDataItem.ts create mode 100644 vis/js/templates/Geomap/LayersSwitcher/types.ts rename vis/js/templates/Geomap/{ => Pins}/Pin/createPinIcon.ts (100%) rename vis/js/templates/Geomap/{ => Pins}/Pin/index.tsx (100%) rename vis/js/templates/Geomap/{ => Pins}/Pin/types.ts (100%) create mode 100644 vis/js/templates/Geomap/Pins/index.tsx delete mode 100644 vis/js/templates/Geomap/selectors.ts diff --git a/vis/hooks/useActiveDataItem.ts b/vis/hooks/useActiveDataItem.ts new file mode 100644 index 000000000..bfaecb00a --- /dev/null +++ b/vis/hooks/useActiveDataItem.ts @@ -0,0 +1,17 @@ +/** + * The hook allows to access a selected or hovered item id in the List. + */ + +import { useSelector } from "react-redux"; + +import { State } from "@/js/types"; + +const getSelectedItemId = (state: State) => state.selectedPaper?.safeId; +const getHoveredItemId = (state: State) => state.data.options.hoveredItemId; + +export const useActiveDataItem = () => { + const selectedItemId = useSelector(getSelectedItemId); + const hoveredItemId = useSelector(getHoveredItemId); + + return { selectedItemId, hoveredItemId }; +}; diff --git a/vis/js/templates/Geomap/LayersSwitcher/config.ts b/vis/js/templates/Geomap/LayersSwitcher/config.ts index 2f2a17513..965b55049 100644 --- a/vis/js/templates/Geomap/LayersSwitcher/config.ts +++ b/vis/js/templates/Geomap/LayersSwitcher/config.ts @@ -1,19 +1,25 @@ -export const CONFIG = [ - { - name: "OpenStreetMap", - attribution: "© OpenStreetMap contributors", - url: "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", - }, - { - name: "OpenStreetMap.HOT", - attribution: - "© OpenStreetMap contributors, Tiles style by Humanitarian OpenStreetMap Team hosted by OpenStreetMap France", - url: "https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png", - }, - { - name: "OpenTopoMap", - attribution: - "Map data: © OpenStreetMap contributors, SRTM | Map style: © OpenTopoMap (CC-BY-SA)", - url: "https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png", - }, -]; +import { Config } from "./types"; + +export const CONFIG: Config = { + POSITION: "topright", + CHECKED_LAYER_NAME: "OpenStreetMap", + LAYERS: [ + { + name: "OpenStreetMap", + attribution: "© OpenStreetMap contributors", + url: "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", + }, + { + name: "OpenStreetMap.HOT", + attribution: + "© OpenStreetMap contributors, Tiles style by Humanitarian OpenStreetMap Team hosted by OpenStreetMap France", + url: "https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png", + }, + { + name: "OpenTopoMap", + attribution: + "Map data: © OpenStreetMap contributors, SRTM | Map style: © OpenTopoMap (CC-BY-SA)", + url: "https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png", + }, + ], +}; diff --git a/vis/js/templates/Geomap/LayersSwitcher/index.tsx b/vis/js/templates/Geomap/LayersSwitcher/index.tsx index 203b4ebae..b7f7540db 100644 --- a/vis/js/templates/Geomap/LayersSwitcher/index.tsx +++ b/vis/js/templates/Geomap/LayersSwitcher/index.tsx @@ -3,12 +3,18 @@ import { LayersControl, TileLayer } from "react-leaflet"; import { CONFIG } from "./config"; +const { LAYERS, CHECKED_LAYER_NAME, POSITION } = CONFIG; + export const LayersSwitcher: FC = () => ( - <LayersControl position="topright"> - {CONFIG.map(({ name, url, attribution }, index) => ( - <LayersControl.BaseLayer key={name} checked={index === 0} name={name}> - <TileLayer attribution={attribution} url={url} /> - </LayersControl.BaseLayer> - ))} + <LayersControl position={POSITION}> + {LAYERS.map(({ name, url, attribution }) => { + const isChecked = name === CHECKED_LAYER_NAME; + + return ( + <LayersControl.BaseLayer key={name} checked={isChecked} name={name}> + <TileLayer attribution={attribution} url={url} /> + </LayersControl.BaseLayer> + ); + })} </LayersControl> ); diff --git a/vis/js/templates/Geomap/LayersSwitcher/types.ts b/vis/js/templates/Geomap/LayersSwitcher/types.ts new file mode 100644 index 000000000..89ea74180 --- /dev/null +++ b/vis/js/templates/Geomap/LayersSwitcher/types.ts @@ -0,0 +1,13 @@ +import { ControlPosition } from "leaflet"; + +type Layer = { + name: string; + attribution: string; + url: string; +}; + +export interface Config { + POSITION: ControlPosition; + CHECKED_LAYER_NAME: string; + LAYERS: Layer[]; +} diff --git a/vis/js/templates/Geomap/Pin/createPinIcon.ts b/vis/js/templates/Geomap/Pins/Pin/createPinIcon.ts similarity index 100% rename from vis/js/templates/Geomap/Pin/createPinIcon.ts rename to vis/js/templates/Geomap/Pins/Pin/createPinIcon.ts diff --git a/vis/js/templates/Geomap/Pin/index.tsx b/vis/js/templates/Geomap/Pins/Pin/index.tsx similarity index 100% rename from vis/js/templates/Geomap/Pin/index.tsx rename to vis/js/templates/Geomap/Pins/Pin/index.tsx diff --git a/vis/js/templates/Geomap/Pin/types.ts b/vis/js/templates/Geomap/Pins/Pin/types.ts similarity index 100% rename from vis/js/templates/Geomap/Pin/types.ts rename to vis/js/templates/Geomap/Pins/Pin/types.ts diff --git a/vis/js/templates/Geomap/Pins/index.tsx b/vis/js/templates/Geomap/Pins/index.tsx new file mode 100644 index 000000000..5a0099caa --- /dev/null +++ b/vis/js/templates/Geomap/Pins/index.tsx @@ -0,0 +1,41 @@ +import { FC, useCallback } from "react"; +import { useDispatch } from "react-redux"; + +import { useActiveDataItem } from "@/hooks/useActiveDataItem"; +import { useData } from "@/hooks/useData"; +import { selectPaper } from "@/js/actions"; +import { AllPossiblePapersType } from "@/js/types"; + +import { Pin } from "./Pin"; + +export const Pins: FC = () => { + const { filteredData } = useData(true); + const { hoveredItemId, selectedItemId } = useActiveDataItem(); + const dispatch = useDispatch(); + + const handlePinClick = useCallback( + (data: AllPossiblePapersType) => { + dispatch(selectPaper(data)); + }, + [dispatch], + ); + + return ( + <> + {filteredData && + filteredData.map((item) => { + const { safe_id: id } = item; + const isActive = selectedItemId === id || hoveredItemId === id; + + return ( + <Pin + key={id + isActive} + data={item} + isActive={isActive} + onClick={handlePinClick} + /> + ); + })} + </> + ); +}; diff --git a/vis/js/templates/Geomap/index.tsx b/vis/js/templates/Geomap/index.tsx index 58f1d1ab1..517a1c978 100644 --- a/vis/js/templates/Geomap/index.tsx +++ b/vis/js/templates/Geomap/index.tsx @@ -1,51 +1,18 @@ import "leaflet/dist/leaflet.css"; -import { FC, useCallback } from "react"; +import { FC } from "react"; import { MapContainer, ZoomControl } from "react-leaflet"; -import { useDispatch, useSelector } from "react-redux"; - -import { useData } from "@/hooks/useData"; -import { selectPaper } from "@/js/actions"; -import { AllPossiblePapersType } from "@/js/types"; import { CONFIG } from "./config"; import { LayersSwitcher } from "./LayersSwitcher"; -import { Pin } from "./Pin"; -import { getHoveredItemId, getSelectedItemId } from "./selectors"; +import { Pins } from "./Pins"; const { MAP, ZOOM_CONTROL } = CONFIG; -export const Geomap: FC = () => { - const { filteredData } = useData(true); - const selectedItemId = useSelector(getSelectedItemId); - const hoveredItemId = useSelector(getHoveredItemId); - const dispatch = useDispatch(); - - const handlePinClick = useCallback( - (data: AllPossiblePapersType) => { - dispatch(selectPaper(data)); - }, - [dispatch], - ); - - return ( - <MapContainer {...MAP} className="geomap_container"> - <ZoomControl {...ZOOM_CONTROL} /> - <LayersSwitcher /> - {filteredData && - filteredData.map((item) => { - const { safe_id: id } = item; - const isActive = selectedItemId === id || hoveredItemId === id; - - return ( - <Pin - key={id + isActive} - data={item} - isActive={isActive} - onClick={handlePinClick} - /> - ); - })} - </MapContainer> - ); -}; +export const Geomap: FC = () => ( + <MapContainer {...MAP} className="geomap_container"> + <ZoomControl {...ZOOM_CONTROL} /> + <LayersSwitcher /> + <Pins /> + </MapContainer> +); diff --git a/vis/js/templates/Geomap/selectors.ts b/vis/js/templates/Geomap/selectors.ts deleted file mode 100644 index 93114a576..000000000 --- a/vis/js/templates/Geomap/selectors.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { State } from "@/js/types"; - -export const getSelectedItemId = (state: State) => state.selectedPaper?.safeId; -export const getHoveredItemId = (state: State) => - state.data.options.hoveredItemId; From 773841f74f0e34b3893780add47e5a1872d8838e Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Wed, 5 Nov 2025 10:15:05 +0100 Subject: [PATCH 111/149] feat: data quality information in the context line --- vis/js/components/ContextLine.tsx | 37 ++++++++++--------- vis/js/i18n/localization.ts | 10 ++++- vis/js/reducers/contextLine.ts | 27 ++++++++++---- .../contextfeatures/MetadataQuality.tsx | 12 +++--- vis/js/types/index.ts | 29 +++++++++------ vis/js/types/state/slices/context-line.ts | 4 +- 6 files changed, 73 insertions(+), 46 deletions(-) diff --git a/vis/js/components/ContextLine.tsx b/vis/js/components/ContextLine.tsx index 6f1bb27c7..2a59200bd 100644 --- a/vis/js/components/ContextLine.tsx +++ b/vis/js/components/ContextLine.tsx @@ -1,30 +1,31 @@ -import React, { ReactNode } from "react"; +import { ReactNode } from "react"; import { connect } from "react-redux"; -import { isDefined } from "../utils/isDefined"; -import { ContextLineTemplate } from "../templates/ContextLine"; + +import { Localization } from "../i18n/localization"; +import { STREAMGRAPH_MODE } from "../reducers/chartType"; import { Author } from "../templates/contextfeatures/Author"; -import DocumentTypes from "../templates/contextfeatures/DocumentTypes"; -import { NumArticles } from "../templates/contextfeatures/NumArticles"; -import DataSource from "../templates/contextfeatures/DataSource"; -import Timespan from "../templates/contextfeatures/Timespan"; -import PaperCount from "../templates/contextfeatures/PaperCount"; +import ContextTimeFrame from "../templates/contextfeatures/ContextTimeFrame"; import DatasetCount from "../templates/contextfeatures/DatasetCount"; +import DataSource from "../templates/contextfeatures/DataSource"; +import DocumentLang from "../templates/contextfeatures/DocumentLang"; +import DocumentTypes from "../templates/contextfeatures/DocumentTypes"; import Funder from "../templates/contextfeatures/Funder"; -import ProjectRuntime from "../templates/contextfeatures/ProjectRuntime"; import LegacySearchLang from "../templates/contextfeatures/LegacySearchLang"; -import SearchLang from "../templates/contextfeatures/SearchLang"; -import Timestamp from "../templates/contextfeatures/Timestamp"; +import MetadataQuality from "../templates/contextfeatures/MetadataQuality"; import Modifier from "../templates/contextfeatures/Modifier"; import MoreInfoLink from "../templates/contextfeatures/MoreInfoLink"; -import MetadataQuality from "../templates/contextfeatures/MetadataQuality"; -import ContextTimeFrame from "../templates/contextfeatures/ContextTimeFrame"; -import DocumentLang from "../templates/contextfeatures/DocumentLang"; -import ResearcherMetricsInfo from "../templates/contextfeatures/ResearcherMetricsInfo"; -import { Employment } from "./Employment"; +import { NumArticles } from "../templates/contextfeatures/NumArticles"; +import PaperCount from "../templates/contextfeatures/PaperCount"; +import ProjectRuntime from "../templates/contextfeatures/ProjectRuntime"; import ResearcherInfo from "../templates/contextfeatures/ResearcherInfo"; -import { STREAMGRAPH_MODE } from "../reducers/chartType"; +import ResearcherMetricsInfo from "../templates/contextfeatures/ResearcherMetricsInfo"; +import SearchLang from "../templates/contextfeatures/SearchLang"; +import Timespan from "../templates/contextfeatures/Timespan"; +import Timestamp from "../templates/contextfeatures/Timestamp"; +import { ContextLineTemplate } from "../templates/ContextLine"; import { Author as AuthorType } from "../types/models/author"; -import { Localization } from "../i18n/localization"; +import { isDefined } from "../utils/isDefined"; +import { Employment } from "./Employment"; interface ContextLineProps { author: AuthorType; diff --git a/vis/js/i18n/localization.ts b/vis/js/i18n/localization.ts index dadd0e1c6..38b60994b 100644 --- a/vis/js/i18n/localization.ts +++ b/vis/js/i18n/localization.ts @@ -94,9 +94,11 @@ export interface Localization { high_metadata_quality: string; high_metadata_quality_desc_base: string; high_metadata_quality_desc_pubmed: string; + high_metadata_quality_desc_aquanavi: string; low_metadata_quality: string; low_metadata_quality_desc_base: string; low_metadata_quality_desc_pubmed: string; + low_metadata_quality_desc_aquanavi: string; time_frame_context_sg: string; citations_count_label: string; social_media_count_label: string; @@ -393,11 +395,15 @@ export const localization: { "This visualization only includes documents with an abstract (min. 300 characters). High metadata quality significantly improves the quality of your visualization.", high_metadata_quality_desc_pubmed: "This visualization only includes documents with an abstract. High metadata quality significantly improves the quality of your visualization.", + high_metadata_quality_desc_aquanavi: + "This visualization only includes documents with an abstract (min. 300 characters). High metadata quality significantly improves the quality of your visualization.", low_metadata_quality: "Data quality", low_metadata_quality_desc_base: - "This visualization includes documents with and without an abstract. Low metadata quality may significantly reduce the quality of your visualization. ", + "This visualization includes documents with and without an abstract. Low metadata quality may significantly reduce the quality of your visualization.", low_metadata_quality_desc_pubmed: - "This visualization includes documents with and without an abstract. Low metadata quality may significantly reduce the quality of your visualization. ", + "This visualization includes documents with and without an abstract. Low metadata quality may significantly reduce the quality of your visualization.", + low_metadata_quality_desc_aquanavi: + "This visualization includes documents with and without an abstract. Low metadata quality may significantly reduce the quality of your visualization.", time_frame_context_sg: "Please note that we remove time intervals with only a few associated papers during the computation of your streamgraph to increase its readability. As a result the time on the x-axis may not align with the time range you selected.", // metrics diff --git a/vis/js/reducers/contextLine.ts b/vis/js/reducers/contextLine.ts index 5618f3f5f..c133e4b58 100644 --- a/vis/js/reducers/contextLine.ts +++ b/vis/js/reducers/contextLine.ts @@ -1,4 +1,4 @@ -import { Config, Context } from "../types"; +import { Config, Context, MetadataQualityType } from "../types"; const exists = (param: any) => { return typeof param !== "undefined" && param !== "null" && param !== null; @@ -96,7 +96,7 @@ const contextLine = (state = {}, action: any) => { export const getModifier = ( config: Config, context: any, - numOfPapers: number + numOfPapers: number, ) => { if (context.service === "orcid") { return "most-recent"; @@ -129,7 +129,7 @@ const getDocumentTypes = (config: Config, context: any) => { const documentTypesArray: string[] = []; // @ts-ignore const documentTypeObj = config.options?.find( - (obj: any) => obj.id === propName + (obj: any) => obj.id === propName, ); context.params[propName].forEach((type: any) => { @@ -168,7 +168,7 @@ const getProjectRuntime = (config: Config, context: any) => { return `${context.params.start_date.slice( 0, - 4 + 4, )}–${context.params.end_date.slice(0, 4)}`; }; @@ -183,14 +183,14 @@ const getLegacySearchLanguage = (config: Config, context: Context) => { } const lang = config.options.languages.find( - (lang) => lang.code === context.params.lang_id + (lang) => lang.code === context.params.lang_id, ); if (!lang) { return null; } - return "Language: " + lang.lang_in_lang + " (" + lang.lang_in_eng + ") "; + return `Language: ${lang.lang_in_lang} (${lang.lang_in_eng}) `; }; const getTimestamp = (config: Config, context: Context) => { @@ -201,7 +201,10 @@ const getTimestamp = (config: Config, context: Context) => { return context.last_update; }; -const getMetadataQuality = (config: Config, context: Context) => { +const getMetadataQuality = ( + config: Config, + context: Context, +): MetadataQualityType | null => { if ( !context.params || !context.params.min_descsize || @@ -210,7 +213,7 @@ const getMetadataQuality = (config: Config, context: Context) => { return null; } - let minDescSize = + const minDescSize = typeof context.params.min_descsize === "string" ? parseInt(context.params.min_descsize) : context.params.min_descsize; @@ -231,6 +234,14 @@ const getMetadataQuality = (config: Config, context: Context) => { return "high"; } + if (context.service === "aquanavi") { + if (minDescSize === 0) { + return "low"; + } + + return "high"; + } + return null; }; diff --git a/vis/js/templates/contextfeatures/MetadataQuality.tsx b/vis/js/templates/contextfeatures/MetadataQuality.tsx index d1fe5302a..dc5a726fd 100644 --- a/vis/js/templates/contextfeatures/MetadataQuality.tsx +++ b/vis/js/templates/contextfeatures/MetadataQuality.tsx @@ -1,14 +1,16 @@ -import React, { FC, ReactNode } from "react"; +import { FC, ReactNode } from "react"; + +import { MetadataQualityType } from "@/js/types"; -import HoverPopover from "../HoverPopover"; import { useLocalizationContext } from "../../components/LocalizationProvider"; -import useMatomo from "../../utils/useMatomo"; import { Localization } from "../../i18n/localization"; +import useMatomo from "../../utils/useMatomo"; +import HoverPopover from "../HoverPopover"; interface MetadataQualityProps { popoverContainer: ReactNode; - service: "base" | "pubmed"; - quality: "high" | "low"; + service: "base" | "pubmed" | "aquanavi"; + quality: MetadataQualityType; } const MetadataQuality: FC<MetadataQualityProps> = ({ diff --git a/vis/js/types/index.ts b/vis/js/types/index.ts index bb473bdbe..a0a54dbd6 100644 --- a/vis/js/types/index.ts +++ b/vis/js/types/index.ts @@ -1,38 +1,43 @@ +// Common types for components props export { PropsWithChildren } from "./components-props"; +// Type of default configuration object export { Config } from "./configs/config"; -export { Author } from "./models/author"; +// Models export { Area } from "./models/area"; +export { Author } from "./models/author"; export { - Paper, - OrcidPaper, - BasePaper, - PubmedPaper, + AllPossiblePapersType, AquanaviPaper, + BasePaper, CommonPaperDataForAllIntegrations, - NotAvailable, - AllPossiblePapersType, GeographicalData, + NotAvailable, + OrcidPaper, + Paper, + PubmedPaper, } from "./models/paper"; +// Visualization parts types export { Context } from "./visualization/context"; +export { ScaleOptions } from "./visualization/scale-options"; export { ServiceType } from "./visualization/service"; export { VisualizationTypes } from "./visualization/visualization-types"; -export { ScaleOptions } from "./visualization/scale-options"; - -export { ContextLine } from "./state/slices/context-line"; +// Redux store types export { State } from "./state"; export { - SelectedPaper, FilterValuesType, + SelectedPaper, SortValuesType, } from "./state/slices"; +export { ContextLine, MetadataQualityType } from "./state/slices/context-line"; export { - Toolbar, ScaleExplanations, ScaleLabels, + Toolbar, } from "./state/slices/toolbar"; +// Redux actions types export { ScaleMapAction } from "./actions/scale-map"; diff --git a/vis/js/types/state/slices/context-line.ts b/vis/js/types/state/slices/context-line.ts index 7caf6455e..1a218f033 100644 --- a/vis/js/types/state/slices/context-line.ts +++ b/vis/js/types/state/slices/context-line.ts @@ -13,7 +13,7 @@ export interface ContextLine { isResearcherDetailsEnabled: unknown; isResearcherMetricsEnabled: unknown; legacySearchLanguage: null; - metadataQuality: string; + metadataQuality: MetadataQualityType; modifier: string; modifierLimit: number; openAccessCount: null; @@ -34,3 +34,5 @@ interface ContextLineAuthorData { imageLink: string | null; livingDates: null; } + +export type MetadataQualityType = "high" | "low"; From d7b7512b4ad05e14c0e44f0d1285f8de32f5fe01 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Wed, 5 Nov 2025 11:54:17 +0100 Subject: [PATCH 112/149] feat: low metadata quality mock --- server/services/searchAQUANAVI.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/services/searchAQUANAVI.php b/server/services/searchAQUANAVI.php index d42423562..6fbaa6d4e 100644 --- a/server/services/searchAQUANAVI.php +++ b/server/services/searchAQUANAVI.php @@ -12,11 +12,11 @@ // Mock some request parameters $post_params = $_POST; -$post_params["min_descsize"] = "300"; +$post_params["min_descsize"] = "0"; $post_params["lang_id"] = ["all-lang"]; $post_params["vis_type"] = "geomap"; $post_params["from"] = "1665-01-01"; -$post_params["to"] = "2025-10-08"; +$post_params["to"] = "2025-11-05"; $post_params["document_types"] = ["F"]; $post_params["sorting"] = "most-relevant"; $post_params["time_range"] = "user-defined"; From 17566c17f7419e157df4e73c7be65a1d1f5d0ba9 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Wed, 5 Nov 2025 15:40:54 +0100 Subject: [PATCH 113/149] feat: refactor attribution for layers --- .../templates/Geomap/LayersSwitcher/config.ts | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/vis/js/templates/Geomap/LayersSwitcher/config.ts b/vis/js/templates/Geomap/LayersSwitcher/config.ts index 965b55049..94e99065f 100644 --- a/vis/js/templates/Geomap/LayersSwitcher/config.ts +++ b/vis/js/templates/Geomap/LayersSwitcher/config.ts @@ -2,24 +2,19 @@ import { Config } from "./types"; export const CONFIG: Config = { POSITION: "topright", - CHECKED_LAYER_NAME: "OpenStreetMap", + CHECKED_LAYER_NAME: "Standard", LAYERS: [ { - name: "OpenStreetMap", - attribution: "© OpenStreetMap contributors", + name: "Standard", + attribution: + '© <a href="https://www.openstreetmap.org/copyright" target="_blank" rel="noopener noreferrer">OpenStreetMap contributors</a> ♥ <a href="https://wiki.osmfoundation.org/wiki/Terms_of_Use" target="_blank" rel="noopener noreferrer">Make a Donation</a>. <a href="https://www.openstreetmap.org/terms" target="_blank" rel="noopener noreferrer">Website and API terms</a>', url: "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", }, { - name: "OpenStreetMap.HOT", + name: "Humanitarian", attribution: - "© OpenStreetMap contributors, Tiles style by Humanitarian OpenStreetMap Team hosted by OpenStreetMap France", + '© <a href="https://www.openstreetmap.org/copyright" target="_blank" rel="noopener noreferrer">OpenStreetMap contributors</a>. Tiles style by <a href="https://www.hotosm.org/" target="_blank" rel="noopener noreferrer">Humanitarian OpenStreetMap Team</a> hosted by <a href="https://openstreetmap.fr/" target="_blank" rel="noopener noreferrer">OpenStreetMap France</a>. <a href="https://www.openstreetmap.org/terms" target="_blank" rel="noopener noreferrer">Website and API terms</a>', url: "https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png", }, - { - name: "OpenTopoMap", - attribution: - "Map data: © OpenStreetMap contributors, SRTM | Map style: © OpenTopoMap (CC-BY-SA)", - url: "https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png", - }, ], }; From 9bb3de2d7422711444f5364612bd63a0a5e13f35 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Wed, 5 Nov 2025 15:57:18 +0100 Subject: [PATCH 114/149] feat: opentopomap in the config --- vis/js/templates/Geomap/LayersSwitcher/config.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/vis/js/templates/Geomap/LayersSwitcher/config.ts b/vis/js/templates/Geomap/LayersSwitcher/config.ts index 94e99065f..2fbd54d10 100644 --- a/vis/js/templates/Geomap/LayersSwitcher/config.ts +++ b/vis/js/templates/Geomap/LayersSwitcher/config.ts @@ -16,5 +16,11 @@ export const CONFIG: Config = { '© <a href="https://www.openstreetmap.org/copyright" target="_blank" rel="noopener noreferrer">OpenStreetMap contributors</a>. Tiles style by <a href="https://www.hotosm.org/" target="_blank" rel="noopener noreferrer">Humanitarian OpenStreetMap Team</a> hosted by <a href="https://openstreetmap.fr/" target="_blank" rel="noopener noreferrer">OpenStreetMap France</a>. <a href="https://www.openstreetmap.org/terms" target="_blank" rel="noopener noreferrer">Website and API terms</a>', url: "https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png", }, + { + name: "Topographical (OpenTopoMap)", + attribution: + 'map data: © <a href="https://openstreetmap.org/copyright" target="_blank" rel="noopener noreferrer">OpenStreetMap</a> contributors, <a href="http://viewfinderpanoramas.org/" target="_blank" rel="noopener noreferrer">SRTM</a> | map style: © <a href="https://opentopomap.org/" target="_blank" rel="noopener noreferrer">OpenTopoMap</a> (<a href="https://creativecommons.org/licenses/by-sa/3.0/" target="_blank" rel="noopener noreferrer">CC-BY-SA</a>)', + url: "https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png", + }, ], }; From f9a7fea3987990997b56403dd6389349eb4e5dd9 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Thu, 6 Nov 2025 10:54:58 +0100 Subject: [PATCH 115/149] feat: font size for layer switcher options --- vis/stylesheets/modules/_geomap.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/vis/stylesheets/modules/_geomap.scss b/vis/stylesheets/modules/_geomap.scss index f19f912cd..d2aea47b6 100644 --- a/vis/stylesheets/modules/_geomap.scss +++ b/vis/stylesheets/modules/_geomap.scss @@ -37,3 +37,7 @@ left: 50%; transform: translate(-50%, -50%); } + +.leaflet-control-layers-base > label > span > span { + font-size: 12px; +} From 66a4c1210b1f84a10c376b8e1091dbd0446a4a65 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Thu, 6 Nov 2025 10:58:22 +0100 Subject: [PATCH 116/149] feat: Open Sans font for all React Leaflet entities --- vis/stylesheets/modules/_geomap.scss | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/vis/stylesheets/modules/_geomap.scss b/vis/stylesheets/modules/_geomap.scss index d2aea47b6..3bf1f169c 100644 --- a/vis/stylesheets/modules/_geomap.scss +++ b/vis/stylesheets/modules/_geomap.scss @@ -41,3 +41,8 @@ .leaflet-control-layers-base > label > span > span { font-size: 12px; } + +.leaflet-container, +.leaflet-container * { + font-family: "Open Sans", Helvetica, sans-serif; +} From 4cd12fe5d84f8d16ad20d7c443f102de0ba874a3 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Thu, 6 Nov 2025 14:10:39 +0100 Subject: [PATCH 117/149] feat: the area is not displayed for geomap visualizations --- vis/js/templates/listentry/StandardListEntry.tsx | 9 +++++---- vis/test/data/base.js | 5 +++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/vis/js/templates/listentry/StandardListEntry.tsx b/vis/js/templates/listentry/StandardListEntry.tsx index d9637499a..e29d88e93 100644 --- a/vis/js/templates/listentry/StandardListEntry.tsx +++ b/vis/js/templates/listentry/StandardListEntry.tsx @@ -35,11 +35,11 @@ interface StandardListEntryProps { showKeywords: boolean; showLocation: boolean; showAuthors: boolean; + showArea: boolean; service: ServiceType; paper: AllPossiblePapersType; isContentBased: boolean; isInStreamBacklink: boolean; - isStreamgraph: boolean; baseUnit: SortValuesType; handleBacklinkClick: () => void; } @@ -58,10 +58,10 @@ const StandardListEntry: FC<StandardListEntryProps> = ({ showKeywords, showLocation, showAuthors, + showArea, showMetrics, isContentBased, baseUnit, - isStreamgraph, showBacklink, isInStreamBacklink, showDocTags, @@ -132,7 +132,7 @@ const StandardListEntry: FC<StandardListEntryProps> = ({ {showCitations && <Citations number={citations} label={baseUnit} />} <PaperButtons paper={paper} /> - {!isStreamgraph && <Area paper={paper} isShort={showCitations} />} + {showArea && <Area paper={paper} isShort={showCitations} />} {!!backlink.show && ( <EntryBacklink onClick={backlink.onClick} @@ -153,7 +153,6 @@ const mapStateToProps = (state: State) => ({ showKeywords: state.list.showKeywords && (!!state.selectedPaper || !state.list.hideUnselectedKeywords), - isStreamgraph: state.chartType === STREAMGRAPH_MODE, showBacklink: state.chartType === STREAMGRAPH_MODE && !!state.selectedPaper, isInStreamBacklink: !!state.selectedBubble, showDocTags: state.service === "base" || state.service === "orcid", @@ -164,6 +163,8 @@ const mapStateToProps = (state: State) => ({ !!state.selectedPaper, service: state.service, showAuthors: state.chartType !== GEOMAP_MODE, + showArea: + state.chartType !== STREAMGRAPH_MODE && state.chartType !== GEOMAP_MODE, }); export default connect( diff --git a/vis/test/data/base.js b/vis/test/data/base.js index c50bd2552..314ef6930 100644 --- a/vis/test/data/base.js +++ b/vis/test/data/base.js @@ -1,4 +1,5 @@ -const data = '[{"id":"007f9e706022c47e76dc473387c78cd95c867ccd10a962ea6daa9fdeca329ca0","relation":"","identifier":"http://dx.doi.org/10.1016/j.atherosclerosis.2020.05.017; https://api.elsevier.com/content/article/PII:S0021915020302914?httpAccept=text/xml; https://api.elsevier.com/content/article/PII:S0021915020302914?httpAccept=text/plain","title":"Calcium deposition within coronary atherosclerotic lesion: Implications for plaque stability","paper_abstract":"No abstract available","published_in":"Atherosclerosis ; volume 306, page 85-95 ; ISSN 0021-9150","year":"2019","subject_orig":"Cardiology and Cardiovascular Medicine","subject":"Cardiology and Cardiovascular Medicine","authors":"Jinnouchi, Hiroyuki; Sato, Yu; Sakamoto, Atsushi; Cornelissen, Anne; Mori, Masayuki; Kawakami, Rika; Gadhoke, Neel V.; Kolodgie, Frank D.; Virmani, Renu; Finn, Aloke V.","link":"http://dx.doi.org/10.1016/j.atherosclerosis.2020.05.017","oa_state":"1","url":"007f9e706022c47e76dc473387c78cd95c867ccd10a962ea6daa9fdeca329ca0","relevance":91,"resulttype":["Journal/newspaper article"],"doi":"https://dx.doi.org/10.1016/j.atherosclerosis.2020.05.017","cluster_labels":"Cardiology and Cardiovascular medicine, Anesthesiology and Pain medicine, Biomedical engineering","x":561.7235209626286,"y":263.86559683046056,"area_uri":6,"area":"Cardiology and Cardiovascular medicine, Anesthesiology and Pain medicine, Biomedical engineering","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"007f9e706022c47e76dc473387c78cd95c867ccd10a962ea6daa9fdeca329ca0","authors_list":["Hiroyuki Jinnouchi","Yu Sato","Atsushi Sakamoto","Anne Cornelissen","Masayuki Mori","Rika Kawakami","Neel V. Gadhoke","Frank D. Kolodgie","Renu Virmani","Aloke V. Finn"],"authors_string":"Hiroyuki Jinnouchi, Yu Sato, Atsushi Sakamoto, Anne Cornelissen, Masayuki Mori, Rika Kawakami, Neel V. Gadhoke, Frank D. Kolodgie, Renu Virmani, Aloke V. Finn","oa":true,"free_access":false,"oa_link":"http://dx.doi.org/10.1016/j.atherosclerosis.2020.05.017","outlink":"http://dx.doi.org/10.1016/j.atherosclerosis.2020.05.017","list_link":{"address":"https://dx.doi.org/10.1016/j.atherosclerosis.2020.05.017","isDoi":true},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"Cardiology and Cardiovascular Medicine","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":561.7235209626286,"zoomedY":263.86559683046056,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"02b418f851c1f0f6556d9ca53a43b7908907b47fc5c09f9df5476a2296254cde","relation":"","identifier":"http://dx.doi.org/10.1016/j.jmst.2019.04.038; https://api.elsevier.com/content/article/PII:S1005030219302580?httpAccept=text/xml; https://api.elsevier.com/content/article/PII:S1005030219302580?httpAccept=text/plain","title":"Synergistic effects of Mg-substitution and particle size of chicken eggshells on hydrothermal synthesis of biphasic calcium phosphate nanocrystals","paper_abstract":"No abstract available","published_in":"Journal of Materials Science & Technology ; volume 36, page 27-36 ; ISSN 1005-0302","year":"2019","subject_orig":"Mechanical Engineering; Materials Chemistry; Mechanics of Materials; Polymers and Plastics; Metals and Alloys; Ceramics and Composites","subject":"Mechanical Engineering; Materials Chemistry; Mechanics of Materials; Polymers and Plastics; Metals and Alloys; Ceramics and Composites","authors":"Cui, Wei; Song, Qibin; Su, Huhu; Yang, Zhiqing; Yang, Rui; Li, Na; Zhang, Xing","link":"http://dx.doi.org/10.1016/j.jmst.2019.04.038","oa_state":"2","url":"02b418f851c1f0f6556d9ca53a43b7908907b47fc5c09f9df5476a2296254cde","relevance":55,"resulttype":["Journal/newspaper article"],"doi":"https://dx.doi.org/10.1016/j.jmst.2019.04.038","cluster_labels":"Materials Chemistry, Ceramics and composites, Mechanics of materials","x":150.52420828799234,"y":-229.43213419876048,"area_uri":12,"area":"Materials Chemistry, Ceramics and composites, Mechanics of materials","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"02b418f851c1f0f6556d9ca53a43b7908907b47fc5c09f9df5476a2296254cde","authors_list":["Wei Cui","Qibin Song","Huhu Su","Zhiqing Yang","Rui Yang","Na Li","Xing Zhang"],"authors_string":"Wei Cui, Qibin Song, Huhu Su, Zhiqing Yang, Rui Yang, Na Li, Xing Zhang","oa":false,"free_access":false,"oa_link":"http://dx.doi.org/10.1016/j.jmst.2019.04.038","outlink":"http://dx.doi.org/10.1016/j.jmst.2019.04.038","list_link":{"address":"https://dx.doi.org/10.1016/j.jmst.2019.04.038","isDoi":true},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"Mechanical Engineering; Materials Chemistry; Mechanics of Materials; Polymers and Plastics; Metals and Alloys; Ceramics and Composites","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":150.52420828799234,"zoomedY":-229.43213419876048,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"040d4caa6c2f61cd9420072a7f683feea01d380b042b1d4d6212775f60eec54a","relation":"","identifier":"http://dx.doi.org/10.1016/j.jds.2020.08.016; https://api.elsevier.com/content/article/PII:S1991790220302051?httpAccept=text/xml; https://api.elsevier.com/content/article/PII:S1991790220302051?httpAccept=text/plain","title":"Efficacy of different calcium silicate materials as pulp-capping agents: Randomized clinical trial","paper_abstract":"No abstract available","published_in":"Journal of Dental Sciences ; ISSN 1991-7902","year":"2019","subject_orig":"General Dentistry","subject":"General Dentistry","authors":"Peskersoy, Cem; Lukarcanin, Jusuf; Turkun, Murat","link":"http://dx.doi.org/10.1016/j.jds.2020.08.016","oa_state":"1","url":"040d4caa6c2f61cd9420072a7f683feea01d380b042b1d4d6212775f60eec54a","relevance":51,"resulttype":["Journal/newspaper article"],"doi":"https://dx.doi.org/10.1016/j.jds.2020.08.016","cluster_labels":"General Dentistry, Calcium silicate","x":-23.236223014513918,"y":-91.05532406628673,"area_uri":3,"area":"General Dentistry, Calcium silicate","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"040d4caa6c2f61cd9420072a7f683feea01d380b042b1d4d6212775f60eec54a","authors_list":["Cem Peskersoy","Jusuf Lukarcanin","Murat Turkun"],"authors_string":"Cem Peskersoy, Jusuf Lukarcanin, Murat Turkun","oa":true,"free_access":false,"oa_link":"http://dx.doi.org/10.1016/j.jds.2020.08.016","outlink":"http://dx.doi.org/10.1016/j.jds.2020.08.016","list_link":{"address":"https://dx.doi.org/10.1016/j.jds.2020.08.016","isDoi":true},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"General Dentistry","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":-23.236223014513918,"zoomedY":-91.05532406628673,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"05043731c203e2a3986dd7426b3e56c206d53e40abff68638b3a4d213faf3ef1","relation":"","identifier":"http://dx.doi.org/10.1016/j.jclepro.2020.122253; https://api.elsevier.com/content/article/PII:S0959652620323003?httpAccept=text/xml; https://api.elsevier.com/content/article/PII:S0959652620323003?httpAccept=text/plain","title":"Ferrous ion-tartaric acid chelation promoted calcium peroxide fenton-like reactions for simulated organic wastewater treatment","paper_abstract":"No abstract available","published_in":"Journal of Cleaner Production ; volume 268, page 122253 ; ISSN 0959-6526","year":"2019","subject_orig":"Renewable Energy, Sustainability and the Environment; Strategy and Management; Industrial and Manufacturing Engineering; General Environmental Science","subject":"Renewable Energy, Sustainability and the Environment; Strategy and Management; Industrial and Manufacturing Engineering; General Environmental Science","authors":"Tang, Shoufeng; Wang, Zetao; Yuan, Deling; Zhang, Chen; Rao, Yandi; Wang, Zhibin; Yin, Kai","link":"http://dx.doi.org/10.1016/j.jclepro.2020.122253","oa_state":"2","url":"05043731c203e2a3986dd7426b3e56c206d53e40abff68638b3a4d213faf3ef1","relevance":57,"resulttype":["Journal/newspaper article"],"doi":"https://dx.doi.org/10.1016/j.jclepro.2020.122253","cluster_labels":"Environmental Chemistry, General Chemistry, General chemical engineering","x":354.5750692066419,"y":-194.89509254014095,"area_uri":4,"area":"Environmental Chemistry, General Chemistry, General chemical engineering","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"05043731c203e2a3986dd7426b3e56c206d53e40abff68638b3a4d213faf3ef1","authors_list":["Shoufeng Tang","Zetao Wang","Deling Yuan","Chen Zhang","Yandi Rao","Zhibin Wang","Kai Yin"],"authors_string":"Shoufeng Tang, Zetao Wang, Deling Yuan, Chen Zhang, Yandi Rao, Zhibin Wang, Kai Yin","oa":false,"free_access":false,"oa_link":"http://dx.doi.org/10.1016/j.jclepro.2020.122253","outlink":"http://dx.doi.org/10.1016/j.jclepro.2020.122253","list_link":{"address":"https://dx.doi.org/10.1016/j.jclepro.2020.122253","isDoi":true},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"Renewable Energy, Sustainability and the Environment; Strategy and Management; Industrial and Manufacturing Engineering; General Environmental Science","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":354.5750692066419,"zoomedY":-194.89509254014095,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"067ecbae1945e9e57eee37b971524c07af05b738296c5a06b5a0842cbcce4dcf","relation":"","identifier":"http://dx.doi.org/10.1016/j.cej.2020.124728; https://api.elsevier.com/content/article/PII:S1385894720307191?httpAccept=text/xml; https://api.elsevier.com/content/article/PII:S1385894720307191?httpAccept=text/plain","title":"Construction of physically crosslinked chitosan/sodium alginate/calcium ion double-network hydrogel and its application to heavy metal ions removal","paper_abstract":"No abstract available","published_in":"Chemical Engineering Journal ; volume 393, page 124728 ; ISSN 1385-8947","year":"2018","subject_orig":"Industrial and Manufacturing Engineering; General Chemistry; General Chemical Engineering; Environmental Chemistry","subject":"Industrial and Manufacturing Engineering; General Chemistry; General Chemical Engineering; Environmental Chemistry","authors":"Tang, Shuxian; Yang, Jueying; Lin, Lizhi; Peng, Kelin; Chen, Yu; Jin, Shaohua; Yao, Weishang","link":"http://dx.doi.org/10.1016/j.cej.2020.124728","oa_state":"2","url":"067ecbae1945e9e57eee37b971524c07af05b738296c5a06b5a0842cbcce4dcf","relevance":97,"resulttype":["Journal/newspaper article"],"doi":"https://dx.doi.org/10.1016/j.cej.2020.124728","cluster_labels":"Environmental Chemistry, General Chemistry, General chemical engineering","x":357.86345609557344,"y":-269.04000735502433,"area_uri":4,"area":"Environmental Chemistry, General Chemistry, General chemical engineering","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"067ecbae1945e9e57eee37b971524c07af05b738296c5a06b5a0842cbcce4dcf","authors_list":["Shuxian Tang","Jueying Yang","Lizhi Lin","Kelin Peng","Yu Chen","Shaohua Jin","Weishang Yao"],"authors_string":"Shuxian Tang, Jueying Yang, Lizhi Lin, Kelin Peng, Yu Chen, Shaohua Jin, Weishang Yao","oa":false,"free_access":false,"oa_link":"http://dx.doi.org/10.1016/j.cej.2020.124728","outlink":"http://dx.doi.org/10.1016/j.cej.2020.124728","list_link":{"address":"https://dx.doi.org/10.1016/j.cej.2020.124728","isDoi":true},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"Industrial and Manufacturing Engineering; General Chemistry; General Chemical Engineering; Environmental Chemistry","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":357.86345609557344,"zoomedY":-269.04000735502433,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"074cb13eb4259520f4819b94b24716658a004b9b4348f5fd5605396ed9f0e489","relation":"","identifier":"http://dx.doi.org/10.1016/j.micromeso.2019.109899; https://api.elsevier.com/content/article/PII:S1387181119307589?httpAccept=text/xml; https://api.elsevier.com/content/article/PII:S1387181119307589?httpAccept=text/plain","title":"Calcium forms of zeolites A and X as fillers in dental restorative materials with remineralizing potential","paper_abstract":"No abstract available","published_in":"Microporous and Mesoporous Materials ; volume 294, page 109899 ; ISSN 1387-1811","year":"2019","subject_orig":"General Materials Science; Mechanics of Materials; General Chemistry; Condensed Matter Physics","subject":"General Materials Science; Mechanics of Materials; General Chemistry; Condensed Matter Physics","authors":"Sandomierski, Mariusz; Buchwald, Zuzanna; Koczorowski, Wojciech; Voelkel, Adam","link":"http://dx.doi.org/10.1016/j.micromeso.2019.109899","oa_state":"2","url":"074cb13eb4259520f4819b94b24716658a004b9b4348f5fd5605396ed9f0e489","relevance":76,"resulttype":["Journal/newspaper article"],"doi":"https://dx.doi.org/10.1016/j.micromeso.2019.109899","cluster_labels":"Materials Chemistry, Ceramics and composites, Mechanics of materials","x":143.17179889956483,"y":-196.76939777369535,"area_uri":12,"area":"Materials Chemistry, Ceramics and composites, Mechanics of materials","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"074cb13eb4259520f4819b94b24716658a004b9b4348f5fd5605396ed9f0e489","authors_list":["Mariusz Sandomierski","Zuzanna Buchwald","Wojciech Koczorowski","Adam Voelkel"],"authors_string":"Mariusz Sandomierski, Zuzanna Buchwald, Wojciech Koczorowski, Adam Voelkel","oa":false,"free_access":false,"oa_link":"http://dx.doi.org/10.1016/j.micromeso.2019.109899","outlink":"http://dx.doi.org/10.1016/j.micromeso.2019.109899","list_link":{"address":"https://dx.doi.org/10.1016/j.micromeso.2019.109899","isDoi":true},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"General Materials Science; Mechanics of Materials; General Chemistry; Condensed Matter Physics","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":143.17179889956483,"zoomedY":-196.76939777369535,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"076294ac4b5e2ff4b7455551183a1bd607895367bf3199272102204b3381c9f0","relation":"","identifier":"http://dx.doi.org/10.1016/j.ceca.2019.102135; https://api.elsevier.com/content/article/PII:S0143416019302040?httpAccept=text/xml; https://api.elsevier.com/content/article/PII:S0143416019302040?httpAccept=text/plain","title":"Potassium-dependent sodium-calcium exchanger (NCKX) isoforms and neuronal function","paper_abstract":"No abstract available","published_in":"Cell Calcium ; volume 86, page 102135 ; ISSN 0143-4160","year":"2017","subject_orig":"Cell Biology; Physiology; Molecular Biology","subject":"Cell Biology; Physiology; Molecular Biology","authors":"Hassan, Mohamed Tarek; Lytton, Jonathan","link":"http://dx.doi.org/10.1016/j.ceca.2019.102135","oa_state":"2","url":"076294ac4b5e2ff4b7455551183a1bd607895367bf3199272102204b3381c9f0","relevance":56,"resulttype":["Journal/newspaper article"],"doi":"https://dx.doi.org/10.1016/j.ceca.2019.102135","cluster_labels":"Cell Biology, Molecular Biology, Biochemistry","x":244.93654618170353,"y":307.27696505246354,"area_uri":10,"area":"Cell Biology, Molecular Biology, Biochemistry","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"076294ac4b5e2ff4b7455551183a1bd607895367bf3199272102204b3381c9f0","authors_list":["Mohamed Tarek Hassan","Jonathan Lytton"],"authors_string":"Mohamed Tarek Hassan, Jonathan Lytton","oa":false,"free_access":false,"oa_link":"http://dx.doi.org/10.1016/j.ceca.2019.102135","outlink":"http://dx.doi.org/10.1016/j.ceca.2019.102135","list_link":{"address":"https://dx.doi.org/10.1016/j.ceca.2019.102135","isDoi":true},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"Cell Biology; Physiology; Molecular Biology","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":244.93654618170353,"zoomedY":307.27696505246354,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"0abe89a641a1f65c0debfeaac234111e680c0c9be74ab1e913f3c306d33c06ad","relation":"","identifier":"http://dx.doi.org/10.1016/j.joen.2020.01.007; https://api.elsevier.com/content/article/PII:S009923992030011X?httpAccept=text/xml; https://api.elsevier.com/content/article/PII:S009923992030011X?httpAccept=text/plain","title":"Immediate and Long-Term Porosity of Calcium Silicate–Based Sealers","paper_abstract":"No abstract available","published_in":"Journal of Endodontics ; volume 46, issue 4, page 515-523 ; ISSN 0099-2399","year":"2007","subject_orig":"General Dentistry","subject":"General Dentistry","authors":"Milanovic, Ivana; Milovanovic, Petar; Antonijevic, Djordje; Dzeletovic, Bojan; Djuric, Marija; Miletic, Vesna","link":"http://dx.doi.org/10.1016/j.joen.2020.01.007","oa_state":"2","url":"0abe89a641a1f65c0debfeaac234111e680c0c9be74ab1e913f3c306d33c06ad","relevance":104,"resulttype":["Journal/newspaper article"],"doi":"https://dx.doi.org/10.1016/j.joen.2020.01.007","cluster_labels":"General Dentistry, Calcium silicate","x":300.62380087137257,"y":81.98175774449822,"area_uri":3,"area":"General Dentistry, Calcium silicate","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"0abe89a641a1f65c0debfeaac234111e680c0c9be74ab1e913f3c306d33c06ad","authors_list":["Ivana Milanovic","Petar Milovanovic","Djordje Antonijevic","Bojan Dzeletovic","Marija Djuric","Vesna Miletic"],"authors_string":"Ivana Milanovic, Petar Milovanovic, Djordje Antonijevic, Bojan Dzeletovic, Marija Djuric, Vesna Miletic","oa":false,"free_access":false,"oa_link":"http://dx.doi.org/10.1016/j.joen.2020.01.007","outlink":"http://dx.doi.org/10.1016/j.joen.2020.01.007","list_link":{"address":"https://dx.doi.org/10.1016/j.joen.2020.01.007","isDoi":true},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"General Dentistry","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":300.62380087137257,"zoomedY":81.98175774449822,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"0c57f833611c8bad0e4cdb5d68d592315ba3b85ef437932a5ff2db21790c934b","relation":"info:eu-repo/grantAgreement/SNF//154434; http://hdl.handle.net/20.500.11850/393261; doi:10.3929/ethz-b-000393261","identifier":"http://hdl.handle.net/20.500.11850/393261; https://doi.org/10.3929/ethz-b-000393261","title":"Erosion and weathering of the Northern Apennines with implications for the tectonics and kinematics of the orogen","paper_abstract":"Mountainous landscapes reflect the competition between denudation, uplift, and climate, which produce, modify, and destroy relief and topography. Bedrock rivers are dynamic topographic features and a critical link between these processes, as they record and convey changes in tectonics, climate, and sea level across the landscape. River incision models, such as the stream power model, are often used to quantify the relationship between topography and rock motion in the context of landscapes at steady state. At steady state, the stream power model predicts higher denudation rates for steeper river channels, while accounting for only the vertical motion of rock due to rock uplift or denudation. However, natural landscapes often have more complicated histories, particularly in convergent orogens with asymmetric topography, where steady state requires that denudation must balance both vertical and horizontal rock motion. This thesis addresses this central issue by comparing the spatial and temporal pattern of denudation with metrics of topographic steepness in the Northern Apennine Mountains of Italy, a young and active orogen with asymmetric topography. New and existing catchment-averaged denudation rates from cosmogenic 10Be concentrations demonstrate that the steeper flank of the Northern Apennines is eroding more slowly than the gentler flank. Long-term denudation rates inverted from low-temperature thermochronometers show that this pattern of denudation across the orogen is long-lived, since at the least 3—5 Ma, and that denudation rates have decreased on the Ligurian side through time. The apparent decoupling between denudation rates and topography is resolved with a kinematic model of the orogenic wedge that accounts for the full vertical and horizontal rock velocity field. This model reconciles the 10Be concentrations, geomorphic observations, and geodetic rates of rock motion with the topography of the Northern Apennines, and provides new estimates for slab retreat rates consistent with recent estimates from tomography, surface geology, and morphology. This thesis also explores the partitioning of denudation into physical erosion and chemical weathering in the Northern Apennines. Chemical weathering in particular is an important control on landscape evolution and the global CO2 budget. Most studies have focused on weathering in orogens comprised of silicate-rich lithologies, which can remove CO2 from the atmosphere over geologic timescales, whereas carbonate weathering is generally considered to be CO2 neutral. However, even in silicate-rich landscapes, carbonate weathering dominates total solute fluxes. Recently uplifted orogens in particular are often characterized by carbonate-rich, marine sedimentary sequences, so the global weathering flux of carbon and calcium to the oceans should be more strongly influenced by these orogens. However, the partitioning of denudation fluxes remains largely unexplored in mixed lithology orogens, so, it is unclear whether the same processes that control erosion and weathering apply to both silicate-rich and mixed lithology settings. Here, denudation fluxes from the Northern Apennines are partitioned into carbonate and silicate chemical weathering and physical erosion fluxes. These fluxes demonstrate that denudation is dominated by physical erosion of both silicate and carbonate rocks; carbonate physical erosion is controlled by lithology; weathering fluxes are dominated by carbonate dissolution; and denudation is negatively correlated with runoff. Finally, denudation fluxes from the Northern Apennines are similar to other temperature mountain ranges (e.g. Southern Alps of New Zealand), although total weathering fluxes from this study are generally higher, due to greater carbonate weathering fluxes. The results from this thesis challenge current interpretations regarding denudation rates through space and time and contribute to a broader understanding of surface and crustal processes in the Northern Apennines.","published_in":"","year":"2008","subject_orig":"info:eu-repo/classification/ddc/550; Earth sciences","subject":"classification; Earth sciences","authors":"Erlanger, Erica","link":"http://hdl.handle.net/20.500.11850/393261","oa_state":"1","url":"0c57f833611c8bad0e4cdb5d68d592315ba3b85ef437932a5ff2db21790c934b","relevance":47,"resulttype":["Thesis: doctoral and postdoctoral"],"doi":"","cluster_labels":"Aplysina aerophoba, Bone cements, Cement production","x":-407.6043812452111,"y":-517.330375719018,"area_uri":1,"area":"Aplysina aerophoba, Bone cements, Cement production","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"0c57f833611c8bad0e4cdb5d68d592315ba3b85ef437932a5ff2db21790c934b","authors_list":["Erica Erlanger"],"authors_string":"Erica Erlanger","oa":true,"free_access":false,"oa_link":"http://hdl.handle.net/20.500.11850/393261","outlink":"http://hdl.handle.net/20.500.11850/393261","list_link":{"address":"http://hdl.handle.net/20.500.11850/393261","isDoi":false},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"info:eu-repo/classification/ddc/550; Earth sciences","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":-407.6043812452111,"zoomedY":-517.330375719018,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"102e53cc31c856e18170a1a7dbd35871d49dd80712a993aa32f717600fdbd281","relation":"OTOLOGY & NEUROTOLOGY; Cinar Z., Edizer D. T. , Yigit O., Altunay Z. O. , GÜL M., Atas A., \\"Does Calcium Dobesilate Have Therapeutic Effect on Gentamicin-induced Cochlear Nerve Ototoxicity? An Experimental Study\\", OTOLOGY & NEUROTOLOGY, cilt.41, 2020; 1531-7129; vv_1032021; av_b4b78ea8-face-41db-be48-1a8aa9300d2d; http://hdl.handle.net/20.500.12627/2022; https://doi.org/10.1097/mao.0000000000002820; 41; 10","identifier":"http://hdl.handle.net/20.500.12627/2022; https://doi.org/10.1097/mao.0000000000002820","title":"Does Calcium Dobesilate Have Therapeutic Effect on Gentamicin-induced Cochlear Nerve Ototoxicity? An Experimental Study","paper_abstract":"Hypothesis: The ototoxic effects of aminoglycosides are well known. Gentamicin carries a substantial risk of hearing loss. Gentamicin is widely used to combat life-threatening infections, despite its ototoxic effects. Calcium dobesilate is a pharmacologically active agent used to treat many disorders due to its vasoprotective and antioxidant effects. We investigated the therapeutic role of calcium dobesilate against gentamicin-induced cochlear nerve ototoxicity in an animal model. Methods: Thirty-two Sprague Dawley rats were divided into four groups: Gentamicin, Gentamicin + Calcium Dobesilate, Calcium Dobesilate, and Control. Preoperative and postoperative hearing thresholds were determined using auditory brainstem response thresholds with click and 16-kHz tone-burst stimuli. Histological analysis of the tympanic bulla specimens was performed under light and transmission electron microscopy. The histological findings were subjected to semiquantitative grading, of which the results were compared between the groups. Results: Gentamicin + Calcium Dobesilate group had, on average, 27 dB better click-evoked hearing than Gentamicin group (p 0.01). Histologically examining the Control and Calcium Dobesilate groups revealed normal ultrastructural appearances. The Gentamicin group showed the most severe histological alterations including myelin destruction, total axonal degeneration, and edema. The histological evidence of damage was significantly reduced in the Gentamicin + Calcium Dobesilate group compared with the Gentamicin group. Conclusion: Adding oral calcium dobesilate to systemic gentamicin was demonstrated to exert beneficial effects on click-evoked hearing thresholds, as supported by the histological findings.","published_in":"","year":"2010","subject_orig":"Cerrahi Tıp Bilimleri; Kulak Burun Boğaz; Dahili Tıp Bilimleri; Nöroloji; Sağlık Bilimleri; Tıp; Klinik Tıp (MED); Klinik Tıp; KLİNİK NEUROLOJİ","subject":"Cerrahi Tıp Bilimleri; Kulak Burun Boğaz; Dahili Tıp Bilimleri; Nöroloji; Sağlık Bilimleri; Tıp; Klinik Tıp (MED); Klinik Tıp; KLİNİK NEUROLOJİ","authors":"Yigit, Ozgur; Atas, Ahmet; Edizer, Deniz Tuna; Altunay, Zeynep Onerci; GÜL, MEHMET; Cinar, Zehra","link":"http://hdl.handle.net/20.500.12627/2022","oa_state":"2","url":"102e53cc31c856e18170a1a7dbd35871d49dd80712a993aa32f717600fdbd281","relevance":32,"resulttype":["Journal/newspaper article"],"doi":"","cluster_labels":"Calcium dobesilate, Calcium hydroxide, Sağlık Bilimleri","x":-295.86026785880813,"y":356.62839103116636,"area_uri":13,"area":"Calcium dobesilate, Calcium hydroxide, Sağlık Bilimleri","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"102e53cc31c856e18170a1a7dbd35871d49dd80712a993aa32f717600fdbd281","authors_list":["Ozgur Yigit","Ahmet Atas","Deniz Tuna Edizer","Zeynep Onerci Altunay","MEHMET GÜL","Zehra Cinar"],"authors_string":"Ozgur Yigit, Ahmet Atas, Deniz Tuna Edizer, Zeynep Onerci Altunay, MEHMET GÜL, Zehra Cinar","oa":false,"free_access":false,"oa_link":"http://hdl.handle.net/20.500.12627/2022","outlink":"http://hdl.handle.net/20.500.12627/2022","list_link":{"address":"http://hdl.handle.net/20.500.12627/2022","isDoi":false},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"Cerrahi Tıp Bilimleri; Kulak Burun Boğaz; Dahili Tıp Bilimleri; Nöroloji; Sağlık Bilimleri; Tıp; Klinik Tıp (MED); Klinik Tıp; KLİNİK NEUROLOJİ","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":-295.86026785880813,"zoomedY":356.62839103116636,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"105d3c6168ff9c861167d3bf7d23998b6f4736766e45abeef5a5e12dbbf98f9e","relation":"","identifier":"http://dx.doi.org/10.1016/j.jmrt.2020.10.054; https://api.elsevier.com/content/article/PII:S223878542031913X?httpAccept=text/xml; https://api.elsevier.com/content/article/PII:S223878542031913X?httpAccept=text/plain","title":"Fabrication of spherical Ti–6Al–4V powder for additive manufacturing by radio frequency plasma spheroidization and deoxidation using calcium","paper_abstract":"No abstract available","published_in":"Journal of Materials Research and Technology ; volume 9, issue 6, page 14792-14798 ; ISSN 2238-7854","year":"2011","subject_orig":"not available","subject":"additive manufacturing; al v; deoxidation calcium","authors":"Li, Jing; Hao, Zhenhua; Shu, Yongchun; He, Jilin","link":"http://dx.doi.org/10.1016/j.jmrt.2020.10.054","oa_state":"1","url":"105d3c6168ff9c861167d3bf7d23998b6f4736766e45abeef5a5e12dbbf98f9e","relevance":113,"resulttype":["Journal/newspaper article"],"doi":"https://dx.doi.org/10.1016/j.jmrt.2020.10.054","cluster_labels":"Additive manufacturing, Calcium soda, Glass Ceramics","x":129.41376462733248,"y":-38.75727326181964,"area_uri":5,"area":"Additive manufacturing, Calcium soda, Glass Ceramics","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"105d3c6168ff9c861167d3bf7d23998b6f4736766e45abeef5a5e12dbbf98f9e","authors_list":["Jing Li","Zhenhua Hao","Yongchun Shu","Jilin He"],"authors_string":"Jing Li, Zhenhua Hao, Yongchun Shu, Jilin He","oa":true,"free_access":false,"oa_link":"http://dx.doi.org/10.1016/j.jmrt.2020.10.054","outlink":"http://dx.doi.org/10.1016/j.jmrt.2020.10.054","list_link":{"address":"https://dx.doi.org/10.1016/j.jmrt.2020.10.054","isDoi":true},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"not available","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":129.41376462733248,"zoomedY":-38.75727326181964,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"115a4799c17b8ef4e5ffde14e8bc63588c6ab32e4fc68d0b2c2903df137197ab","relation":"Acevedo, A. Calidad del Agua para Consumo Humano en el municipio de Trubaco. Colombia, Bolívar, 2006 Aguilar, O y Navarro, B. Evaluación de la calidad de agua para consumo humano de la comunidad de Llañucancha del distrito de Abancay (tesis). UTLA, Abancay, 2018 Álvarez, A. Salud pública y medicina preventiva. México, En manual del libro, 1991. Aurazo, G. La Contaminación en el centro del país. Tambo – Huancayo, 2004. Camacho, A. Método para la determinación de bacterias coliformes, coliformes fecales y Escherichia Coli por la Técnica de dilución en tubo múltiple. México, 2009 Campoverde, J. Análisis del efecto toxicológico que provoca el consumo humano de agua no potable, mediante la determinación de cloro libre residual en aguas tratadas de las parroquias rurales del cantón Cuenca (tesis). Universidad estatal de Cuenca. Ecuador, 2015 Cava, T. Caracterización físico – química y microbiológica de agua para consumo humano de la localidad Las Juntas del distrito Pacora – Lambayeque (tesis). Perú: UNPRG, 2016 Chemical Company, N. &.Manual del Agua su Naturaleza, Tratamiento y Aplicaciones. México: McGraw-Hill/Interamericana, 2005. Comisión Económica para América Latina y El Caribe (CEPAL). Financiamiento e inversión para el desarrollo sostenible en América Latina y el Caribe: perspectivas regionales para instrumentar el Consenso de Monterrey y el Plan de Implementación de Johannesburgo. Santiago de Chile, Chile, 2002 Contreras, L. Contaminación de Aguas Superficiales por Residuos de Plaguicida en Venezuela y oros países de Latinoamérica. Venezuela, 2013. Crites, R. Tratamiento de Aguas Residuales en Pequeñas Poblaciones. Bogotá – Colombia, 2000. Daza, A. Talleres inductivos para mejorar el nivel de percepción y el nivel de conocimiento en torno a la calidad del agua potable en el distrito de Nueva Cajamarca. (tesis). UNSM, 2017”, DIGESA. Dirección General de Salud Ambiental. En Decreto Supremo N° 031-2010 (pág. 10). Lima – Perú, 2010 Dirección General de Salud Ambiental. Reglamento de la Calidad del Agua para Consumo Humano. Lima – Perú, 2010 Fawell & Nieuwenhuijsen. Evaluación bacteriológica de agua potable suministrada dentro de las escuelas del gobierno del distrito Patna. India, 2003 Flores, L. Contaminación Bacteriológica por Coliformes Totales, Coliformes Fecales, Escherichia Coli y Salmonella SP en Aguas Termales de alcance turístico de la región San Martín . San Martín, 2016. Galarraga, E. Algunos Aspectos Relacionados con microorganismo en agua potable. Revista Politécnica de Información Técnica Científica, 1984 Gil, E. Análisis Microbiológico y Químico de las Aguas y Técnicas de Muestreo, Facultad de Ciencias Biológicas. Universidad Nacional de Trujillo. Trujillo – Perú, 2010. Hernández, C. Detección de Salmonella y Coliformes Fecales en agua de uso agrícola para la producción de melón. México, 2008. Levine, A. &. Evaluación del agua para consumo humano. (tesis). UTEA. ABANCAY, 1998. Madigan, M. (2012). Biología de los microorganismos. Madrid - España: Pearson, 2012 Marco. Prueba de la conductividad eléctrica en la evaluación fisiológica de la calidad de zemillas zeyheria tuberculosa. brazil. 2014 Mendoza, M. Impacto de la tierra en la calidad del agua de la microcuenca rio Sábalos. Costa Rica: CATIE, 1996 Metcalf. Ingeniería de aguas residuales tratamiento vertido y reutilización. En Eddy Madrid - España: Mc Graw, 1995. Orellana, J. Características del Agua Potable. UTN – FRRO. Argentina, 2005 Organización Mundial de la Salud (OMS). Manual para el desarrollo planes de seguridad del agua: Metodología pormenorizada de gestión de riesgos para proveedores de agua de consumo. Ginebra – Suiza, 2009 Organización Panamericana de la Salud (OPS), Consideraciones sobre el programa medio ambiente y salud en el Istmo Centroamericano. San José, CR, 1993 Organización Mundial de la Salud. Guía para la Calidad del Agua Potable Organización Panamericana de la Salud. Guías para la Calidad del Agua Potable. Control de la Calidad del Agua Potable en Sistemas de Abastecimiento para Pequeñas Comunidades. Lima, 1998 Organización Panamericana de la Salud. Técnicas para la Construcción de Captaciones de Aguas Superficiales. Lima, 2004 Oviedo, A. Participación Ciudadana y Espacio Público. En Segovia y Dascal (2º ed.). Santiago de Chile: Ediciones SUR, 2002 Páez, L. Validación Secundaria del Método de Filtración por Membrana para la Detección de Coliformes Totales y Escherichia Coli en muestras de agua para consumo humano analizadas en el laboratorio de salud pública del Huila. Colombia, 2008. Ramírez, L. Aplicación de la educación ambiental para desarrollar una cultura sustentable del agua en el centro poblado Los Ángeles. Moyobamba. (tesis). UNSM, 2017 Reglamento de la Calidad del Agua para Consumo Humano (D.S.061-2010-SA) Rojas et al. La pequeña cuenca como abastecedora de agua. Santiago. República Dominicana, 2002 Romero. Equidad en el Acceso del Agua en la ciudad de Lima una mirada a partir del derecho humano al agua. Lima, 2010 Santos, J. Conocimiento en cuanto a la calidad del agua potable en tres sectores específicos de Montemorelos (tesis). UAM. México, 2015 Sawyer C & Mc Carty. Química para Ingeniería Ambiental. Colombia: Mc Graw Hill. 2001 Severiche & Gonzales. Evaluación para la determinación de sulfatos en aguas por métodos turbidiometrico modificado. Cartagena – Colombia, 2012 SUNASS. Resolución de Gerencia General N°037-2004. Vargas, L. Tratamiento de aguas de consumo humano. Lima.2008 Zarza, L. La guerra del agua, un futuro distópico no tan lejano. 2009; http://hdl.handle.net/11458/3789","identifier":"http://hdl.handle.net/11458/3789","title":"Participación comunitaria para mejorar la calidad del agua para consumo humano en asentamiento humano San Genaro, distrito de Chorrillos – Lima, 2019","paper_abstract":"En el presente trabajo de investigación, tuvo como objetivo determinar la influencia de la participación comunitaria en el mejoramiento de la calidad del agua para consumo humano en asentamiento humano San Genaro, para lo cual se analizaron los parámetros microbiológicos como son coliformes totales y termotolerantes y fisicoquímicos como son color, turbiedad, cloro residual y pH del agua antes de recibir el tratamiento que involucraba a participación comunitaria. Asimismo, se diseñó y aplicó una metodología apropiada para el tratamiento con hipoclorito de calcio al 70%. En la parte metodológica, se trabajó con un solo grupo bajo un diseño pre experimental con una muestra de 40 familias de las cuales se tomaron dos muestras de agua de un litro cada, las mismas que fueron llevadas al laboratorio para su análisis microbiológicos y físico químico de acuerdo a lo estipulado en el D.S. 031 – 2010. S.A. En cuanto a los resultados encontramos que antes del tratamiento en el domicilio el agua no era apta para el consumo humano dado que los parámetros microbiológicos, superaban los límites máximos permisibles. En el pos tratamiento no se logró que dichos parámetros se reduzcan a cero como lo establece la norma pero no se logró que dichos parámetros se reduzcan a cero como lo establece la norma pero se logró un avance significativo. En cuanto a los parámetros fisicoquímicos después del tratamiento todos se encontraron bajo los límites máximos permisibles. La metodología diseñada para capacitar en el uso adecuado y tratamiento del agua a nivel domiciliario, fue determinante para que los pobladores conozcan sobre el agua, y su tratamiento. ; This research aimed to determine the influence of community participation in the improvement of water quality for human consumption in the settlement “San Genaro”, to which the microbiological parameters of total coliforms, thermotolerants and physicochemicals such as color, turbidity, chlorine residual and pH of water were analyzed before applying the treatment that involves the community participation. It was also designed and applied an appropriate methodology of 70% calcium hypochlorite treatment. In the methodological part, it has been worked with a single group by the pre-experimCnta1 design with a sample of 40 families from those who two water of one liter each one were sampled, which were taken to the laboratory for the microbiological and physical- chemical analysis as it was stipulated in D.S. 031 — 2010. S.A. Regarding the results it was found that before the treatment in households the water was not suitable for human consumption since the microbiological parameters exceeded the maximum permissible limits. The post-treatment did not reduce these parameters to zero as it is set forth in the standard, but a significant progress was made. As for the physical- chemical parameters after the treatment all the parameters were found under the maximum permissible limits. The methodology which was designed to train people in the appropriately to a given use and treatment of water in the households was decisive for the settlers to know about water and its treatment. ; Tesis ; Apa","published_in":"Universidad Nacional de San Martín - Tarapoto ; Repositorio Digital UNSM - T","year":"2012","subject_orig":"agua potable; calidad; coliformes; tratamiento; ; Drinking water; quality; coliforms; treatment","subject":"agua potable; calidad; coliformes; tratamiento; ; Drinking water; quality; coliforms; treatment","authors":"Pinedo Pérez, Ray Freddy","link":"http://hdl.handle.net/11458/3789","oa_state":"1","url":"115a4799c17b8ef4e5ffde14e8bc63588c6ab32e4fc68d0b2c2903df137197ab","relevance":41,"resulttype":["Thesis: bachelor"],"doi":"","cluster_labels":"Calcio por","x":-738.9105040968409,"y":-83.38616017384305,"area_uri":14,"area":"Calcio por","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"115a4799c17b8ef4e5ffde14e8bc63588c6ab32e4fc68d0b2c2903df137197ab","authors_list":["Ray Freddy Pinedo Pérez"],"authors_string":"Ray Freddy Pinedo Pérez","oa":true,"free_access":false,"oa_link":"http://hdl.handle.net/11458/3789","outlink":"http://hdl.handle.net/11458/3789","list_link":{"address":"http://hdl.handle.net/11458/3789","isDoi":false},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"agua potable; calidad; coliformes; tratamiento; ; Drinking water; quality; coliforms; treatment","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":-738.9105040968409,"zoomedY":-83.38616017384305,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"173c2872c0fec35d6d776d2d5d630c9791137c2fe35c19ef0a69294004752b3a","relation":"","identifier":"http://dx.doi.org/10.1016/j.jcrc.2020.05.005; https://api.elsevier.com/content/article/PII:S088394412030561X?httpAccept=text/xml; https://api.elsevier.com/content/article/PII:S088394412030561X?httpAccept=text/plain","title":"Determinants of Total/ionized Calcium in patients undergoing citrate CVVH: A retrospective observational study","paper_abstract":"No abstract available","published_in":"Journal of Critical Care ; volume 59, page 16-22 ; ISSN 0883-9441","year":"2013","subject_orig":"Critical Care and Intensive Care Medicine","subject":"Critical Care and Intensive Care Medicine","authors":"Boer, Willem; van Tornout, Mathias; Solmi, Francesca; Willaert, Xavier; Schetz, Miet; Oudemans-van Straaten, Heleen","link":"http://dx.doi.org/10.1016/j.jcrc.2020.05.005","oa_state":"2","url":"173c2872c0fec35d6d776d2d5d630c9791137c2fe35c19ef0a69294004752b3a","relevance":63,"resulttype":["Journal/newspaper article"],"doi":"https://dx.doi.org/10.1016/j.jcrc.2020.05.005","cluster_labels":"Cardiology and Cardiovascular medicine, Anesthesiology and Pain medicine, Biomedical engineering","x":113.52177685316846,"y":358.1048400696528,"area_uri":6,"area":"Cardiology and Cardiovascular medicine, Anesthesiology and Pain medicine, Biomedical engineering","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"173c2872c0fec35d6d776d2d5d630c9791137c2fe35c19ef0a69294004752b3a","authors_list":["Willem Boer","Mathias van Tornout","Francesca Solmi","Xavier Willaert","Miet Schetz","Heleen Oudemans-van Straaten"],"authors_string":"Willem Boer, Mathias van Tornout, Francesca Solmi, Xavier Willaert, Miet Schetz, Heleen Oudemans-van Straaten","oa":false,"free_access":false,"oa_link":"http://dx.doi.org/10.1016/j.jcrc.2020.05.005","outlink":"http://dx.doi.org/10.1016/j.jcrc.2020.05.005","list_link":{"address":"https://dx.doi.org/10.1016/j.jcrc.2020.05.005","isDoi":true},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"Critical Care and Intensive Care Medicine","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":113.52177685316846,"zoomedY":358.1048400696528,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"18aa40d6effaf4a9d7e2a90c08bb839f913a0c2f61f0d6305490c13fff550864","relation":"http://repository.ust.hk/ir/Record/1783.1-105762; Journal of Infection in Developing Countries, v. 14, (8), August 2020, p. 908-917; 2036-6590; https://doi.org/10.3855/jidc.12341; http://lbdiscover.ust.hk/uresolver?url_ver=Z39.88-2004&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rfr_id=info:sid/HKUST:SPI&rft.genre=article&rft.issn=2036-6590&rft.volume=v. 14&rft.issue=(8)&rft.date=2020&rft.spage=908&rft.aulast=He&rft.aufirst=W.&rft.atitle=Hypocalcemia+in+sepsis%3A+Analysis+of+the+subcellular+distribution+of+Ca2%2B+in+septic+rats+and+LPS%2FTNF-%CE%B1-treated+HUVECs&rft.title=Journal+of+Infection+in+Developing+Countries; http://www.scopus.com/record/display.url?eid=2-s2.0-85090819023&origin=inward; http://gateway.isiknowledge.com/gateway/Gateway.cgi?GWVersion=2&SrcAuth=LinksAMR&SrcApp=PARTNER_APP&DestLinkType=FullRecord&DestApp=WOS&KeyUT=000571485000016","identifier":"http://repository.ust.hk/ir/Record/1783.1-105762; https://doi.org/10.3855/jidc.12341; http://lbdiscover.ust.hk/uresolver?url_ver=Z39.88-2004&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rfr_id=info:sid/HKUST:SPI&rft.genre=article&rft.issn=2036-6590&rft.volume=v. 14&rft.issue=(8)&rft.date=2020&rft.spage=908&rft.aulast=He&rft.aufirst=W.&rft.atitle=Hypocalcemia+in+sepsis%3A+Analysis+of+the+subcellular+distribution+of+Ca2%2B+in+septic+rats+and+LPS%2FTNF-%CE%B1-treated+HUVECs&rft.title=Journal+of+Infection+in+Developing+Countries; http://www.scopus.com/record/display.url?eid=2-s2.0-85090819023&origin=inward; http://gateway.isiknowledge.com/gateway/Gateway.cgi?GWVersion=2&SrcAuth=LinksAMR&SrcApp=PARTNER_APP&DestLinkType=FullRecord&DestApp=WOS&KeyUT=000571485000016","title":"Hypocalcemia in sepsis: Analysis of the subcellular distribution of Ca 2+ in septic rats and LPS/TNF-α-treated HUVECs","paper_abstract":"Introduction: Hypocalcemia has been widely recognized in sepsis patients. However, the cause of hypocalcemia in sepsis is still not clear, and little is known about the subcellular distribution of Ca2+ in tissues during sepsis. Methodology: We measured the dynamic change in Ca2+ levels in body fluid and subcellular compartments, including the cytosol, endoplasmic reticulum and mitochondria, in major organs of cecal ligation and puncture (CLP)-operated rats, as well as the subcellular Ca2+ flux in HUVECs which treated by endotoxin and cytokines. Results: In the model of CLP-induced sepsis, the blood and urinary Ca2+ concentrations decreased rapidly, while the Ca2+ concentration in ascites fluid increased. The Ca2+ concentrations in the cytosol, ER, and mitochondria were elevated nearly synchronously in major organs in our sepsis model. Moreover, the calcium overload in CLP-operated rats treated with calcium supplementation was more severe than that in the non-calcium-supplemented rats but was alleviated by treatment with the calcium channel blocker verapamil. Similar subcellular Ca2+ flux was found in vitro in HUVECs and was triggered by lipopolysaccharide (LPS)/TNF-α. Conclusions: Ca2+ influx from the blood into the intercellular space and Ca2+ release into ascites fluid may cause hypocalcemia in sepsis and that this process may be due to the synergistic effect of endotoxin and cytokines. Copyright © 2020 He et al.","published_in":"","year":"2014","subject_orig":"Calcium overload; Hypocalcemia; Mechanism; Sepsis; Subcellular redistribution","subject":"Calcium overload; Hypocalcemia; Mechanism; Sepsis; Subcellular redistribution","authors":"He, Wencheng; Huang, Lei; Luo, Hua; Zang, Yang; An, Youzhong; Zhang, Weixing","link":"http://repository.ust.hk/ir/Record/1783.1-105762","oa_state":"2","url":"18aa40d6effaf4a9d7e2a90c08bb839f913a0c2f61f0d6305490c13fff550864","relevance":44,"resulttype":["Journal/newspaper article"],"doi":"","cluster_labels":"Aplysina aerophoba, Bone cements, Cement production","x":-289.08592214893275,"y":474.95500137890565,"area_uri":1,"area":"Aplysina aerophoba, Bone cements, Cement production","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"18aa40d6effaf4a9d7e2a90c08bb839f913a0c2f61f0d6305490c13fff550864","authors_list":["Wencheng He","Lei Huang","Hua Luo","Yang Zang","Youzhong An","Weixing Zhang"],"authors_string":"Wencheng He, Lei Huang, Hua Luo, Yang Zang, Youzhong An, Weixing Zhang","oa":false,"free_access":false,"oa_link":"http://repository.ust.hk/ir/Record/1783.1-105762","outlink":"http://repository.ust.hk/ir/Record/1783.1-105762","list_link":{"address":"http://repository.ust.hk/ir/Record/1783.1-105762","isDoi":false},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"Calcium overload; Hypocalcemia; Mechanism; Sepsis; Subcellular redistribution","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":-289.08592214893275,"zoomedY":474.95500137890565,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"18b910ac555e6516759bcb401c9b8bcecf61710b27475b59d2c283850dae4b0b","relation":"","identifier":"http://dx.doi.org/10.1016/j.bbadis.2020.165682; https://api.elsevier.com/content/article/PII:S0925443920300211?httpAccept=text/xml; https://api.elsevier.com/content/article/PII:S0925443920300211?httpAccept=text/plain","title":"Disturbance of bioenergetics and calcium homeostasis provoked by metabolites accumulating in propionic acidemia in heart mitochondria of developing rats","paper_abstract":"No abstract available","published_in":"Biochimica et Biophysica Acta (BBA) - Molecular Basis of Disease ; volume 1866, issue 5, page 165682 ; ISSN 0925-4439","year":"2014","subject_orig":"Molecular Medicine; Molecular Biology","subject":"Molecular Medicine; Molecular Biology","authors":"Roginski, Ana Cristina; Wajner, Alessandro; Cecatto, Cristiane; Wajner, Simone Magagnin; Castilho, Roger Frigério; Wajner, Moacir; Amaral, Alexandre Umpierrez","link":"http://dx.doi.org/10.1016/j.bbadis.2020.165682","oa_state":"2","url":"18b910ac555e6516759bcb401c9b8bcecf61710b27475b59d2c283850dae4b0b","relevance":85,"resulttype":["Journal/newspaper article"],"doi":"https://dx.doi.org/10.1016/j.bbadis.2020.165682","cluster_labels":"Cardiology and Cardiovascular medicine, Anesthesiology and Pain medicine, Biomedical engineering","x":333.7840764552536,"y":412.915086704248,"area_uri":6,"area":"Cardiology and Cardiovascular medicine, Anesthesiology and Pain medicine, Biomedical engineering","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"18b910ac555e6516759bcb401c9b8bcecf61710b27475b59d2c283850dae4b0b","authors_list":["Ana Cristina Roginski","Alessandro Wajner","Cristiane Cecatto","Simone Magagnin Wajner","Roger Frigério Castilho","Moacir Wajner","Alexandre Umpierrez Amaral"],"authors_string":"Ana Cristina Roginski, Alessandro Wajner, Cristiane Cecatto, Simone Magagnin Wajner, Roger Frigério Castilho, Moacir Wajner, Alexandre Umpierrez Amaral","oa":false,"free_access":false,"oa_link":"http://dx.doi.org/10.1016/j.bbadis.2020.165682","outlink":"http://dx.doi.org/10.1016/j.bbadis.2020.165682","list_link":{"address":"https://dx.doi.org/10.1016/j.bbadis.2020.165682","isDoi":true},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"Molecular Medicine; Molecular Biology","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":333.7840764552536,"zoomedY":412.915086704248,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"18cabd2db11b6c2f6108b9fb11d07ce9ec55f2b3037f6cac6e1ea00710728958","relation":"info:eu-repo/grantAgreement/RSF//18-13-00220; Electrochemical method for isolation of chitinous 3D scaffolds from cultivated Aplysina aerophoba marine demosponge and its biomimetic application / K. Nowacki, I. Stępniak, T. Machałowski, M. Wysokowski, et al. . — DOI 10.1007/s00339-020-03533-2 // Applied Physics A: Materials Science and Processing. — 2020. — Vol. 5. — Iss. 126. — 368.; 0947-8396; https://link.springer.com/content/pdf/10.1007/s00339-020-03533-2.pdf; 1; 38868361-3cfe-459c-a6e6-38487816c83a; http://www.scopus.com/inward/record.url?partnerID=8YFLogxK&scp=85083983339; http://hdl.handle.net/10995/90559; https://elar.urfu.ru/handle/10995/90559; doi:10.1007/s00339-020-03533-2; 85083983339; 000530377600001","identifier":"https://elar.urfu.ru/handle/10995/90559; https://link.springer.com/content/pdf/10.1007/s00339-020-03533-2.pdf; http://www.scopus.com/inward/record.url?partnerID=8YFLogxK&scp=85083983339; http://hdl.handle.net/10995/90559; https://doi.org/10.1007/s00339-020-03533-2","title":"Electrochemical method for isolation of chitinous 3D scaffolds from cultivated Aplysina aerophoba marine demosponge and its biomimetic application","paper_abstract":"Three-dimensional (3D) biopolymer-based scaffolds including chitinous matrices have been widely used for tissue engineering, regenerative medicine and other modern interdisciplinary fields including extreme biomimetics. In this study, we introduce a novel, electrochemically assisted method for 3D chitin scaffolds isolation from the cultivated marine demosponge Aplysina aerophoba which consists of three main steps: (1) decellularization, (2) decalcification and (3) main deproteinization along with desilicification and depigmentation. For the first time, the obtained electrochemically isolated 3D chitinous scaffolds have been further biomineralized ex vivo using hemolymph of Cornu aspersum edible snail aimed to generate calcium carbonates-based layered biomimetic scaffolds. The analysis of prior to, during and post-electrochemical isolation samples as well as samples treated with molluscan hemolymph was conducted employing analytical techniques such as SEM, XRD, ATR–FTIR and Raman spectroscopy. Finally, the use of described method for chitin isolation combined with biomineralization ex vivo resulted in the formation of crystalline (calcite) calcium carbonate-based deposits on the surface of chitinous scaffolds, which could serve as promising biomaterials for the wide range of biomedical, environmental and biomimetic applications. © 2020, The Author(s). ; Politechnika PoznaÅ ska, PUT: 0911/SBAD/0380/2019 ; Deutsche Forschungsgemeinschaft, DFG: HE 394/3 ; Deutscher Akademischer Austauschdienst, DAAD ; Russian Science Foundation, RSF: 18-13-00220 ; PPN/BEK/2018/1/00071 ; 03/32/SBAD/0906 ; Sächsisches Staatsministerium für Wissenschaft und Kunst, SMWK: 02010311 ; This work was performed with the financial support of Poznan University of Technology, Poland (Grant No. 0911/SBAD/0380/2019), as well as by the Ministry of Science and Higher Education (Poland) as financial subsidy to PUT No. 03/32/SBAD/0906. Krzysztof Nowacki was supported by the Erasmus Plus program (2019). Also, this study was partially supported by the DFG Project HE 394/3 and SMWK Project No. 02010311 (Germany). Marcin Wysokowski is financially supported by the Polish National Agency for Academic Exchange (PPN/BEK/2018/1/00071). Tomasz Machałowski is supported by DAAD (Personal Ref. No. 91734605). Yuliya Khrunyk is supported by the Russian Science Foundation (Grant No. 18-13-00220).","published_in":"Applied Physics A: Materials Science and Processing","year":"2014","subject_orig":"APLYSINA AEROPHOBA; BIOMIMETICS; BIOMINERALIZATION; CHITIN; ELECTROLYSIS; HEMOLYMPH; MARINE SPONGES; SCAFFOLDS; BIOMIMETIC PROCESSES; BIOPOLYMERS; BLOOD; CALCITE; CALCIUM CARBONATE; FOURIER TRANSFORM INFRARED SPECTROSCOPY; BIOMIMETIC SCAFFOLDS; DECELLULARIZATION; DEPROTEINIZATION; DESILICIFICATION; ELECTROCHEMICAL METHODS; INTERDISCIPLINARY FIELDS; THREEDIMENSIONAL (3-D); SCAFFOLDS (BIOLOGY)","subject":"APLYSINA AEROPHOBA; BIOMIMETICS; BIOMINERALIZATION; CHITIN; ELECTROLYSIS; HEMOLYMPH; MARINE SPONGES; SCAFFOLDS; BIOMIMETIC PROCESSES; BIOPOLYMERS; BLOOD; CALCITE; CALCIUM CARBONATE; FOURIER TRANSFORM INFRARED SPECTROSCOPY; BIOMIMETIC SCAFFOLDS; DECELLULARIZATION; DEPROTEINIZATION; DESILICIFICATION; ELECTROCHEMICAL METHODS; INTERDISCIPLINARY FIELDS; THREEDIMENSIONAL (3-D); SCAFFOLDS (BIOLOGY)","authors":"Nowacki, K.; Stępniak, I.; Machałowski, T.; Wysokowski, M.; Petrenko, I.; Schimpf, C.; Rafaja, D.; Langer, E.; Richter, A.; Ziętek, J.; Pantović, S.; Voronkina, A.; Kovalchuk, V.; Ivanenko, V.; Khrunyk, Y.; Galli, R.; Joseph, Y.; Gelinsky, M.; Jesionowski, T.; Ehrlich, H.","link":"https://elar.urfu.ru/handle/10995/90559","oa_state":"1","url":"18cabd2db11b6c2f6108b9fb11d07ce9ec55f2b3037f6cac6e1ea00710728958","relevance":119,"resulttype":["Journal/newspaper article"],"doi":"","cluster_labels":"Aplysina aerophoba, Bone cements, Cement production","x":-378.56966126291104,"y":-256.2991357415894,"area_uri":1,"area":"Aplysina aerophoba, Bone cements, Cement production","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"18cabd2db11b6c2f6108b9fb11d07ce9ec55f2b3037f6cac6e1ea00710728958","authors_list":["K. Nowacki","I. Stępniak","T. Machałowski","M. Wysokowski","I. Petrenko","C. Schimpf","D. Rafaja","E. Langer","A. Richter","J. Ziętek","S. Pantović","A. Voronkina","V. Kovalchuk","V. Ivanenko","Y. Khrunyk","R. Galli","Y. Joseph","M. Gelinsky","T. Jesionowski","H. Ehrlich"],"authors_string":"K. Nowacki, I. Stępniak, T. Machałowski, M. Wysokowski, I. Petrenko, C. Schimpf, D. Rafaja, E. Langer, A. Richter, J. Ziętek, S. Pantović, A. Voronkina, V. Kovalchuk, V. Ivanenko, Y. Khrunyk, R. Galli, Y. Joseph, M. Gelinsky, T. Jesionowski, H. Ehrlich","oa":true,"free_access":false,"oa_link":"https://elar.urfu.ru/handle/10995/90559","outlink":"https://elar.urfu.ru/handle/10995/90559","list_link":{"address":"https://elar.urfu.ru/handle/10995/90559","isDoi":false},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"APLYSINA AEROPHOBA; BIOMIMETICS; BIOMINERALIZATION; CHITIN; ELECTROLYSIS; HEMOLYMPH; MARINE SPONGES; SCAFFOLDS; BIOMIMETIC PROCESSES; BIOPOLYMERS; BLOOD; CALCITE; CALCIUM CARBONATE; FOURIER TRANSFORM INFRARED SPECTROSCOPY; BIOMIMETIC SCAFFOLDS; DECELLULARIZATION; DEPROTEINIZATION; DESILICIFICATION; ELECTROCHEMICAL METHODS; INTERDISCIPLINARY FIELDS; THREEDIMENSIONAL (3-D); SCAFFOLDS (BIOLOGY)","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":-378.56966126291104,"zoomedY":-256.2991357415894,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"19a932b519a5e80af6a11b9ba1972bda68582a4821983fc35e0c36c798ff5304","relation":"","identifier":"http://dx.doi.org/10.1016/j.bja.2020.11.020; https://api.elsevier.com/content/article/PII:S0007091220309417?httpAccept=text/xml; https://api.elsevier.com/content/article/PII:S0007091220309417?httpAccept=text/plain","title":"Association between ionised calcium and severity of postpartum haemorrhage: a retrospective cohort study","paper_abstract":"No abstract available","published_in":"British Journal of Anaesthesia ; ISSN 0007-0912","year":"2016","subject_orig":"Anesthesiology and Pain Medicine","subject":"Anesthesiology and Pain Medicine","authors":"Epstein, Danny; Solomon, Neta; Korytny, Alexander; Marcusohn, Erez; Freund, Yaacov; Avrahami, Ron; Neuberger, Ami; Raz, Aeyal; Miller, Asaf","link":"http://dx.doi.org/10.1016/j.bja.2020.11.020","oa_state":"2","url":"19a932b519a5e80af6a11b9ba1972bda68582a4821983fc35e0c36c798ff5304","relevance":80,"resulttype":["Journal/newspaper article"],"doi":"https://dx.doi.org/10.1016/j.bja.2020.11.020","cluster_labels":"Cardiology and Cardiovascular medicine, Anesthesiology and Pain medicine, Biomedical engineering","x":77.17433271369153,"y":548.9759877351977,"area_uri":6,"area":"Cardiology and Cardiovascular medicine, Anesthesiology and Pain medicine, Biomedical engineering","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"19a932b519a5e80af6a11b9ba1972bda68582a4821983fc35e0c36c798ff5304","authors_list":["Danny Epstein","Neta Solomon","Alexander Korytny","Erez Marcusohn","Yaacov Freund","Ron Avrahami","Ami Neuberger","Aeyal Raz","Asaf Miller"],"authors_string":"Danny Epstein, Neta Solomon, Alexander Korytny, Erez Marcusohn, Yaacov Freund, Ron Avrahami, Ami Neuberger, Aeyal Raz, Asaf Miller","oa":false,"free_access":false,"oa_link":"http://dx.doi.org/10.1016/j.bja.2020.11.020","outlink":"http://dx.doi.org/10.1016/j.bja.2020.11.020","list_link":{"address":"https://dx.doi.org/10.1016/j.bja.2020.11.020","isDoi":true},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"Anesthesiology and Pain Medicine","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":77.17433271369153,"zoomedY":548.9759877351977,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"1bf85b5d4283034512f4f98547edd85e4e24688520d6a8c30bfb5570bfaf46e4","relation":"","identifier":"http://dx.doi.org/10.1016/j.ecoenv.2020.110382; https://api.elsevier.com/content/article/PII:S0147651320302219?httpAccept=text/xml; https://api.elsevier.com/content/article/PII:S0147651320302219?httpAccept=text/plain","title":"Mechanism of deoxynivalenol-induced neurotoxicity in weaned piglets is linked to lipid peroxidation, dampened neurotransmitter levels, and interference with calcium signaling","paper_abstract":"No abstract available","published_in":"Ecotoxicology and Environmental Safety ; volume 194, page 110382 ; ISSN 0147-6513","year":"2018","subject_orig":"Public Health, Environmental and Occupational Health; Pollution; Health, Toxicology and Mutagenesis; General Medicine","subject":"Public Health, Environmental and Occupational Health; Pollution; Health, Toxicology and Mutagenesis; General Medicine","authors":"Wang, Xichun; Chen, Xiaofang; Cao, Li; Zhu, Lei; Zhang, Yafei; Chu, Xiaoyan; Zhu, Dianfeng; Rahman, Sajid ur; Peng, Chenglu; Feng, Shibin; Li, Yu; Wu, Jinjie","link":"http://dx.doi.org/10.1016/j.ecoenv.2020.110382","oa_state":"2","url":"1bf85b5d4283034512f4f98547edd85e4e24688520d6a8c30bfb5570bfaf46e4","relevance":89,"resulttype":["Journal/newspaper article"],"doi":"https://dx.doi.org/10.1016/j.ecoenv.2020.110382","cluster_labels":"Health, Toxicology and Mutagenesis, Pollution, Public health, Environmental and Occupational health","x":589.2537638381383,"y":-123.9600378228878,"area_uri":11,"area":"Health, Toxicology and Mutagenesis, Pollution, Public health, Environmental and Occupational health","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"1bf85b5d4283034512f4f98547edd85e4e24688520d6a8c30bfb5570bfaf46e4","authors_list":["Xichun Wang","Xiaofang Chen","Li Cao","Lei Zhu","Yafei Zhang","Xiaoyan Chu","Dianfeng Zhu","Sajid ur Rahman","Chenglu Peng","Shibin Feng","Yu Li","Jinjie Wu"],"authors_string":"Xichun Wang, Xiaofang Chen, Li Cao, Lei Zhu, Yafei Zhang, Xiaoyan Chu, Dianfeng Zhu, Sajid ur Rahman, Chenglu Peng, Shibin Feng, Yu Li, Jinjie Wu","oa":false,"free_access":false,"oa_link":"http://dx.doi.org/10.1016/j.ecoenv.2020.110382","outlink":"http://dx.doi.org/10.1016/j.ecoenv.2020.110382","list_link":{"address":"https://dx.doi.org/10.1016/j.ecoenv.2020.110382","isDoi":true},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"Public Health, Environmental and Occupational Health; Pollution; Health, Toxicology and Mutagenesis; General Medicine","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":589.2537638381383,"zoomedY":-123.9600378228878,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"1ce5c57da3f48098e0080fe373ba47f951aef0902db3c54a2fe97cc3033b9ca6","relation":"","identifier":"http://dx.doi.org/10.1016/j.ijhydene.2020.01.243; https://api.elsevier.com/content/article/PII:S0360319920304389?httpAccept=text/xml; https://api.elsevier.com/content/article/PII:S0360319920304389?httpAccept=text/plain","title":"A novel hybrid iron-calcium catalyst/absorbent for enhanced hydrogen production via catalytic tar reforming with in-situ CO2 capture","paper_abstract":"No abstract available","published_in":"International Journal of Hydrogen Energy ; volume 45, issue 18, page 10709-10723 ; ISSN 0360-3199","year":"2018","subject_orig":"Fuel Technology; Renewable Energy, Sustainability and the Environment; Energy Engineering and Power Technology; Condensed Matter Physics","subject":"Fuel Technology; Renewable Energy, Sustainability and the Environment; Energy Engineering and Power Technology; Condensed Matter Physics","authors":"Han, Long; Liu, Qi; Zhang, Yuan; Lin, Kang; Xu, Guoqiang; Wang, Qinhui; Rong, Nai; Liang, Xiaorui; Feng, Yi; Wu, Pingjiang; Ma, Kaili; Xia, Jia; Zhang, Chengkun; Zhong, Yingjie","link":"http://dx.doi.org/10.1016/j.ijhydene.2020.01.243","oa_state":"2","url":"1ce5c57da3f48098e0080fe373ba47f951aef0902db3c54a2fe97cc3033b9ca6","relevance":49,"resulttype":["Journal/newspaper article"],"doi":"https://dx.doi.org/10.1016/j.ijhydene.2020.01.243","cluster_labels":"Energy engineering and power technology, Fuel technology, Renewable energy, Sustainability and the environment","x":302.5594585224438,"y":-451.1359813831703,"area_uri":7,"area":"Energy engineering and power technology, Fuel technology, Renewable energy, Sustainability and the environment","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"1ce5c57da3f48098e0080fe373ba47f951aef0902db3c54a2fe97cc3033b9ca6","authors_list":["Long Han","Qi Liu","Yuan Zhang","Kang Lin","Guoqiang Xu","Qinhui Wang","Nai Rong","Xiaorui Liang","Yi Feng","Pingjiang Wu","Kaili Ma","Jia Xia","Chengkun Zhang","Yingjie Zhong"],"authors_string":"Long Han, Qi Liu, Yuan Zhang, Kang Lin, Guoqiang Xu, Qinhui Wang, Nai Rong, Xiaorui Liang, Yi Feng, Pingjiang Wu, Kaili Ma, Jia Xia, Chengkun Zhang, Yingjie Zhong","oa":false,"free_access":false,"oa_link":"http://dx.doi.org/10.1016/j.ijhydene.2020.01.243","outlink":"http://dx.doi.org/10.1016/j.ijhydene.2020.01.243","list_link":{"address":"https://dx.doi.org/10.1016/j.ijhydene.2020.01.243","isDoi":true},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"Fuel Technology; Renewable Energy, Sustainability and the Environment; Energy Engineering and Power Technology; Condensed Matter Physics","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":302.5594585224438,"zoomedY":-451.1359813831703,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"1df4dc2b7f978c7e018f4126c3a21a6db0eaa22f1bc573a77324e2c2fa4eca09","relation":"","identifier":"http://dx.doi.org/10.1016/j.jdent.2020.103370; https://api.elsevier.com/content/article/PII:S0300571220301160?httpAccept=text/xml; https://api.elsevier.com/content/article/PII:S0300571220301160?httpAccept=text/plain","title":"Retreatment efficacy of hydraulic calcium silicate sealers used in single cone obturation","paper_abstract":"No abstract available","published_in":"Journal of Dentistry ; volume 98, page 103370 ; ISSN 0300-5712","year":"2020","subject_orig":"General Dentistry","subject":"General Dentistry","authors":"Garrib, M.; Camilleri, J.","link":"http://dx.doi.org/10.1016/j.jdent.2020.103370","oa_state":"2","url":"1df4dc2b7f978c7e018f4126c3a21a6db0eaa22f1bc573a77324e2c2fa4eca09","relevance":117,"resulttype":["Journal/newspaper article"],"doi":"https://dx.doi.org/10.1016/j.jdent.2020.103370","cluster_labels":"General Dentistry, Calcium silicate","x":267.02866723546236,"y":60.119337594951375,"area_uri":3,"area":"General Dentistry, Calcium silicate","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"1df4dc2b7f978c7e018f4126c3a21a6db0eaa22f1bc573a77324e2c2fa4eca09","authors_list":["M. Garrib","J. Camilleri"],"authors_string":"M. Garrib, J. Camilleri","oa":false,"free_access":false,"oa_link":"http://dx.doi.org/10.1016/j.jdent.2020.103370","outlink":"http://dx.doi.org/10.1016/j.jdent.2020.103370","list_link":{"address":"https://dx.doi.org/10.1016/j.jdent.2020.103370","isDoi":true},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"General Dentistry","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":267.02866723546236,"zoomedY":60.119337594951375,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642}]'; +const data = + '[{"id":"007f9e706022c47e76dc473387c78cd95c867ccd10a962ea6daa9fdeca329ca0","relation":"","identifier":"http://dx.doi.org/10.1016/j.atherosclerosis.2020.05.017; https://api.elsevier.com/content/article/PII:S0021915020302914?httpAccept=text/xml; https://api.elsevier.com/content/article/PII:S0021915020302914?httpAccept=text/plain","title":"Calcium deposition within coronary atherosclerotic lesion: Implications for plaque stability","paper_abstract":"No abstract available","published_in":"Atherosclerosis ; volume 306, page 85-95 ; ISSN 0021-9150","year":"2019","subject_orig":"Cardiology and Cardiovascular Medicine","subject":"Cardiology and Cardiovascular Medicine","authors":"Jinnouchi, Hiroyuki; Sato, Yu; Sakamoto, Atsushi; Cornelissen, Anne; Mori, Masayuki; Kawakami, Rika; Gadhoke, Neel V.; Kolodgie, Frank D.; Virmani, Renu; Finn, Aloke V.","link":"http://dx.doi.org/10.1016/j.atherosclerosis.2020.05.017","oa_state":"1","url":"007f9e706022c47e76dc473387c78cd95c867ccd10a962ea6daa9fdeca329ca0","relevance":91,"resulttype":["Journal/newspaper article"],"doi":"https://dx.doi.org/10.1016/j.atherosclerosis.2020.05.017","cluster_labels":"Cardiology and Cardiovascular medicine, Anesthesiology and Pain medicine, Biomedical engineering","x":561.7235209626286,"y":263.86559683046056,"area_uri":6,"area":"Cardiology and Cardiovascular medicine, Anesthesiology and Pain medicine, Biomedical engineering","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"007f9e706022c47e76dc473387c78cd95c867ccd10a962ea6daa9fdeca329ca0","authors_list":["Hiroyuki Jinnouchi","Yu Sato","Atsushi Sakamoto","Anne Cornelissen","Masayuki Mori","Rika Kawakami","Neel V. Gadhoke","Frank D. Kolodgie","Renu Virmani","Aloke V. Finn"],"authors_string":"Hiroyuki Jinnouchi, Yu Sato, Atsushi Sakamoto, Anne Cornelissen, Masayuki Mori, Rika Kawakami, Neel V. Gadhoke, Frank D. Kolodgie, Renu Virmani, Aloke V. Finn","oa":true,"free_access":false,"oa_link":"http://dx.doi.org/10.1016/j.atherosclerosis.2020.05.017","outlink":"http://dx.doi.org/10.1016/j.atherosclerosis.2020.05.017","list_link":{"address":"https://dx.doi.org/10.1016/j.atherosclerosis.2020.05.017","isDoi":true},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"Cardiology and Cardiovascular Medicine","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":561.7235209626286,"zoomedY":263.86559683046056,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"02b418f851c1f0f6556d9ca53a43b7908907b47fc5c09f9df5476a2296254cde","relation":"","identifier":"http://dx.doi.org/10.1016/j.jmst.2019.04.038; https://api.elsevier.com/content/article/PII:S1005030219302580?httpAccept=text/xml; https://api.elsevier.com/content/article/PII:S1005030219302580?httpAccept=text/plain","title":"Synergistic effects of Mg-substitution and particle size of chicken eggshells on hydrothermal synthesis of biphasic calcium phosphate nanocrystals","paper_abstract":"No abstract available","published_in":"Journal of Materials Science & Technology ; volume 36, page 27-36 ; ISSN 1005-0302","year":"2019","subject_orig":"Mechanical Engineering; Materials Chemistry; Mechanics of Materials; Polymers and Plastics; Metals and Alloys; Ceramics and Composites","subject":"Mechanical Engineering; Materials Chemistry; Mechanics of Materials; Polymers and Plastics; Metals and Alloys; Ceramics and Composites","authors":"Cui, Wei; Song, Qibin; Su, Huhu; Yang, Zhiqing; Yang, Rui; Li, Na; Zhang, Xing","link":"http://dx.doi.org/10.1016/j.jmst.2019.04.038","oa_state":"2","url":"02b418f851c1f0f6556d9ca53a43b7908907b47fc5c09f9df5476a2296254cde","relevance":55,"resulttype":["Journal/newspaper article"],"doi":"https://dx.doi.org/10.1016/j.jmst.2019.04.038","cluster_labels":"Materials Chemistry, Ceramics and composites, Mechanics of materials","x":150.52420828799234,"y":-229.43213419876048,"area_uri":12,"area":"Materials Chemistry, Ceramics and composites, Mechanics of materials","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"02b418f851c1f0f6556d9ca53a43b7908907b47fc5c09f9df5476a2296254cde","authors_list":["Wei Cui","Qibin Song","Huhu Su","Zhiqing Yang","Rui Yang","Na Li","Xing Zhang"],"authors_string":"Wei Cui, Qibin Song, Huhu Su, Zhiqing Yang, Rui Yang, Na Li, Xing Zhang","oa":false,"free_access":false,"oa_link":"http://dx.doi.org/10.1016/j.jmst.2019.04.038","outlink":"http://dx.doi.org/10.1016/j.jmst.2019.04.038","list_link":{"address":"https://dx.doi.org/10.1016/j.jmst.2019.04.038","isDoi":true},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"Mechanical Engineering; Materials Chemistry; Mechanics of Materials; Polymers and Plastics; Metals and Alloys; Ceramics and Composites","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":150.52420828799234,"zoomedY":-229.43213419876048,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"040d4caa6c2f61cd9420072a7f683feea01d380b042b1d4d6212775f60eec54a","relation":"","identifier":"http://dx.doi.org/10.1016/j.jds.2020.08.016; https://api.elsevier.com/content/article/PII:S1991790220302051?httpAccept=text/xml; https://api.elsevier.com/content/article/PII:S1991790220302051?httpAccept=text/plain","title":"Efficacy of different calcium silicate materials as pulp-capping agents: Randomized clinical trial","paper_abstract":"No abstract available","published_in":"Journal of Dental Sciences ; ISSN 1991-7902","year":"2019","subject_orig":"General Dentistry","subject":"General Dentistry","authors":"Peskersoy, Cem; Lukarcanin, Jusuf; Turkun, Murat","link":"http://dx.doi.org/10.1016/j.jds.2020.08.016","oa_state":"1","url":"040d4caa6c2f61cd9420072a7f683feea01d380b042b1d4d6212775f60eec54a","relevance":51,"resulttype":["Journal/newspaper article"],"doi":"https://dx.doi.org/10.1016/j.jds.2020.08.016","cluster_labels":"General Dentistry, Calcium silicate","x":-23.236223014513918,"y":-91.05532406628673,"area_uri":3,"area":"General Dentistry, Calcium silicate","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"040d4caa6c2f61cd9420072a7f683feea01d380b042b1d4d6212775f60eec54a","authors_list":["Cem Peskersoy","Jusuf Lukarcanin","Murat Turkun"],"authors_string":"Cem Peskersoy, Jusuf Lukarcanin, Murat Turkun","oa":true,"free_access":false,"oa_link":"http://dx.doi.org/10.1016/j.jds.2020.08.016","outlink":"http://dx.doi.org/10.1016/j.jds.2020.08.016","list_link":{"address":"https://dx.doi.org/10.1016/j.jds.2020.08.016","isDoi":true},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"General Dentistry","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":-23.236223014513918,"zoomedY":-91.05532406628673,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"05043731c203e2a3986dd7426b3e56c206d53e40abff68638b3a4d213faf3ef1","relation":"","identifier":"http://dx.doi.org/10.1016/j.jclepro.2020.122253; https://api.elsevier.com/content/article/PII:S0959652620323003?httpAccept=text/xml; https://api.elsevier.com/content/article/PII:S0959652620323003?httpAccept=text/plain","title":"Ferrous ion-tartaric acid chelation promoted calcium peroxide fenton-like reactions for simulated organic wastewater treatment","paper_abstract":"No abstract available","published_in":"Journal of Cleaner Production ; volume 268, page 122253 ; ISSN 0959-6526","year":"2019","subject_orig":"Renewable Energy, Sustainability and the Environment; Strategy and Management; Industrial and Manufacturing Engineering; General Environmental Science","subject":"Renewable Energy, Sustainability and the Environment; Strategy and Management; Industrial and Manufacturing Engineering; General Environmental Science","authors":"Tang, Shoufeng; Wang, Zetao; Yuan, Deling; Zhang, Chen; Rao, Yandi; Wang, Zhibin; Yin, Kai","link":"http://dx.doi.org/10.1016/j.jclepro.2020.122253","oa_state":"2","url":"05043731c203e2a3986dd7426b3e56c206d53e40abff68638b3a4d213faf3ef1","relevance":57,"resulttype":["Journal/newspaper article"],"doi":"https://dx.doi.org/10.1016/j.jclepro.2020.122253","cluster_labels":"Environmental Chemistry, General Chemistry, General chemical engineering","x":354.5750692066419,"y":-194.89509254014095,"area_uri":4,"area":"Environmental Chemistry, General Chemistry, General chemical engineering","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"05043731c203e2a3986dd7426b3e56c206d53e40abff68638b3a4d213faf3ef1","authors_list":["Shoufeng Tang","Zetao Wang","Deling Yuan","Chen Zhang","Yandi Rao","Zhibin Wang","Kai Yin"],"authors_string":"Shoufeng Tang, Zetao Wang, Deling Yuan, Chen Zhang, Yandi Rao, Zhibin Wang, Kai Yin","oa":false,"free_access":false,"oa_link":"http://dx.doi.org/10.1016/j.jclepro.2020.122253","outlink":"http://dx.doi.org/10.1016/j.jclepro.2020.122253","list_link":{"address":"https://dx.doi.org/10.1016/j.jclepro.2020.122253","isDoi":true},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"Renewable Energy, Sustainability and the Environment; Strategy and Management; Industrial and Manufacturing Engineering; General Environmental Science","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":354.5750692066419,"zoomedY":-194.89509254014095,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"067ecbae1945e9e57eee37b971524c07af05b738296c5a06b5a0842cbcce4dcf","relation":"","identifier":"http://dx.doi.org/10.1016/j.cej.2020.124728; https://api.elsevier.com/content/article/PII:S1385894720307191?httpAccept=text/xml; https://api.elsevier.com/content/article/PII:S1385894720307191?httpAccept=text/plain","title":"Construction of physically crosslinked chitosan/sodium alginate/calcium ion double-network hydrogel and its application to heavy metal ions removal","paper_abstract":"No abstract available","published_in":"Chemical Engineering Journal ; volume 393, page 124728 ; ISSN 1385-8947","year":"2018","subject_orig":"Industrial and Manufacturing Engineering; General Chemistry; General Chemical Engineering; Environmental Chemistry","subject":"Industrial and Manufacturing Engineering; General Chemistry; General Chemical Engineering; Environmental Chemistry","authors":"Tang, Shuxian; Yang, Jueying; Lin, Lizhi; Peng, Kelin; Chen, Yu; Jin, Shaohua; Yao, Weishang","link":"http://dx.doi.org/10.1016/j.cej.2020.124728","oa_state":"2","url":"067ecbae1945e9e57eee37b971524c07af05b738296c5a06b5a0842cbcce4dcf","relevance":97,"resulttype":["Journal/newspaper article"],"doi":"https://dx.doi.org/10.1016/j.cej.2020.124728","cluster_labels":"Environmental Chemistry, General Chemistry, General chemical engineering","x":357.86345609557344,"y":-269.04000735502433,"area_uri":4,"area":"Environmental Chemistry, General Chemistry, General chemical engineering","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"067ecbae1945e9e57eee37b971524c07af05b738296c5a06b5a0842cbcce4dcf","authors_list":["Shuxian Tang","Jueying Yang","Lizhi Lin","Kelin Peng","Yu Chen","Shaohua Jin","Weishang Yao"],"authors_string":"Shuxian Tang, Jueying Yang, Lizhi Lin, Kelin Peng, Yu Chen, Shaohua Jin, Weishang Yao","oa":false,"free_access":false,"oa_link":"http://dx.doi.org/10.1016/j.cej.2020.124728","outlink":"http://dx.doi.org/10.1016/j.cej.2020.124728","list_link":{"address":"https://dx.doi.org/10.1016/j.cej.2020.124728","isDoi":true},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"Industrial and Manufacturing Engineering; General Chemistry; General Chemical Engineering; Environmental Chemistry","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":357.86345609557344,"zoomedY":-269.04000735502433,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"074cb13eb4259520f4819b94b24716658a004b9b4348f5fd5605396ed9f0e489","relation":"","identifier":"http://dx.doi.org/10.1016/j.micromeso.2019.109899; https://api.elsevier.com/content/article/PII:S1387181119307589?httpAccept=text/xml; https://api.elsevier.com/content/article/PII:S1387181119307589?httpAccept=text/plain","title":"Calcium forms of zeolites A and X as fillers in dental restorative materials with remineralizing potential","paper_abstract":"No abstract available","published_in":"Microporous and Mesoporous Materials ; volume 294, page 109899 ; ISSN 1387-1811","year":"2019","subject_orig":"General Materials Science; Mechanics of Materials; General Chemistry; Condensed Matter Physics","subject":"General Materials Science; Mechanics of Materials; General Chemistry; Condensed Matter Physics","authors":"Sandomierski, Mariusz; Buchwald, Zuzanna; Koczorowski, Wojciech; Voelkel, Adam","link":"http://dx.doi.org/10.1016/j.micromeso.2019.109899","oa_state":"2","url":"074cb13eb4259520f4819b94b24716658a004b9b4348f5fd5605396ed9f0e489","relevance":76,"resulttype":["Journal/newspaper article"],"doi":"https://dx.doi.org/10.1016/j.micromeso.2019.109899","cluster_labels":"Materials Chemistry, Ceramics and composites, Mechanics of materials","x":143.17179889956483,"y":-196.76939777369535,"area_uri":12,"area":"Materials Chemistry, Ceramics and composites, Mechanics of materials","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"074cb13eb4259520f4819b94b24716658a004b9b4348f5fd5605396ed9f0e489","authors_list":["Mariusz Sandomierski","Zuzanna Buchwald","Wojciech Koczorowski","Adam Voelkel"],"authors_string":"Mariusz Sandomierski, Zuzanna Buchwald, Wojciech Koczorowski, Adam Voelkel","oa":false,"free_access":false,"oa_link":"http://dx.doi.org/10.1016/j.micromeso.2019.109899","outlink":"http://dx.doi.org/10.1016/j.micromeso.2019.109899","list_link":{"address":"https://dx.doi.org/10.1016/j.micromeso.2019.109899","isDoi":true},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"General Materials Science; Mechanics of Materials; General Chemistry; Condensed Matter Physics","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":143.17179889956483,"zoomedY":-196.76939777369535,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"076294ac4b5e2ff4b7455551183a1bd607895367bf3199272102204b3381c9f0","relation":"","identifier":"http://dx.doi.org/10.1016/j.ceca.2019.102135; https://api.elsevier.com/content/article/PII:S0143416019302040?httpAccept=text/xml; https://api.elsevier.com/content/article/PII:S0143416019302040?httpAccept=text/plain","title":"Potassium-dependent sodium-calcium exchanger (NCKX) isoforms and neuronal function","paper_abstract":"No abstract available","published_in":"Cell Calcium ; volume 86, page 102135 ; ISSN 0143-4160","year":"2017","subject_orig":"Cell Biology; Physiology; Molecular Biology","subject":"Cell Biology; Physiology; Molecular Biology","authors":"Hassan, Mohamed Tarek; Lytton, Jonathan","link":"http://dx.doi.org/10.1016/j.ceca.2019.102135","oa_state":"2","url":"076294ac4b5e2ff4b7455551183a1bd607895367bf3199272102204b3381c9f0","relevance":56,"resulttype":["Journal/newspaper article"],"doi":"https://dx.doi.org/10.1016/j.ceca.2019.102135","cluster_labels":"Cell Biology, Molecular Biology, Biochemistry","x":244.93654618170353,"y":307.27696505246354,"area_uri":10,"area":"Cell Biology, Molecular Biology, Biochemistry","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"076294ac4b5e2ff4b7455551183a1bd607895367bf3199272102204b3381c9f0","authors_list":["Mohamed Tarek Hassan","Jonathan Lytton"],"authors_string":"Mohamed Tarek Hassan, Jonathan Lytton","oa":false,"free_access":false,"oa_link":"http://dx.doi.org/10.1016/j.ceca.2019.102135","outlink":"http://dx.doi.org/10.1016/j.ceca.2019.102135","list_link":{"address":"https://dx.doi.org/10.1016/j.ceca.2019.102135","isDoi":true},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"Cell Biology; Physiology; Molecular Biology","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":244.93654618170353,"zoomedY":307.27696505246354,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"0abe89a641a1f65c0debfeaac234111e680c0c9be74ab1e913f3c306d33c06ad","relation":"","identifier":"http://dx.doi.org/10.1016/j.joen.2020.01.007; https://api.elsevier.com/content/article/PII:S009923992030011X?httpAccept=text/xml; https://api.elsevier.com/content/article/PII:S009923992030011X?httpAccept=text/plain","title":"Immediate and Long-Term Porosity of Calcium Silicate–Based Sealers","paper_abstract":"No abstract available","published_in":"Journal of Endodontics ; volume 46, issue 4, page 515-523 ; ISSN 0099-2399","year":"2007","subject_orig":"General Dentistry","subject":"General Dentistry","authors":"Milanovic, Ivana; Milovanovic, Petar; Antonijevic, Djordje; Dzeletovic, Bojan; Djuric, Marija; Miletic, Vesna","link":"http://dx.doi.org/10.1016/j.joen.2020.01.007","oa_state":"2","url":"0abe89a641a1f65c0debfeaac234111e680c0c9be74ab1e913f3c306d33c06ad","relevance":104,"resulttype":["Journal/newspaper article"],"doi":"https://dx.doi.org/10.1016/j.joen.2020.01.007","cluster_labels":"General Dentistry, Calcium silicate","x":300.62380087137257,"y":81.98175774449822,"area_uri":3,"area":"General Dentistry, Calcium silicate","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"0abe89a641a1f65c0debfeaac234111e680c0c9be74ab1e913f3c306d33c06ad","authors_list":["Ivana Milanovic","Petar Milovanovic","Djordje Antonijevic","Bojan Dzeletovic","Marija Djuric","Vesna Miletic"],"authors_string":"Ivana Milanovic, Petar Milovanovic, Djordje Antonijevic, Bojan Dzeletovic, Marija Djuric, Vesna Miletic","oa":false,"free_access":false,"oa_link":"http://dx.doi.org/10.1016/j.joen.2020.01.007","outlink":"http://dx.doi.org/10.1016/j.joen.2020.01.007","list_link":{"address":"https://dx.doi.org/10.1016/j.joen.2020.01.007","isDoi":true},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"General Dentistry","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":300.62380087137257,"zoomedY":81.98175774449822,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"0c57f833611c8bad0e4cdb5d68d592315ba3b85ef437932a5ff2db21790c934b","relation":"info:eu-repo/grantAgreement/SNF//154434; http://hdl.handle.net/20.500.11850/393261; doi:10.3929/ethz-b-000393261","identifier":"http://hdl.handle.net/20.500.11850/393261; https://doi.org/10.3929/ethz-b-000393261","title":"Erosion and weathering of the Northern Apennines with implications for the tectonics and kinematics of the orogen","paper_abstract":"Mountainous landscapes reflect the competition between denudation, uplift, and climate, which produce, modify, and destroy relief and topography. Bedrock rivers are dynamic topographic features and a critical link between these processes, as they record and convey changes in tectonics, climate, and sea level across the landscape. River incision models, such as the stream power model, are often used to quantify the relationship between topography and rock motion in the context of landscapes at steady state. At steady state, the stream power model predicts higher denudation rates for steeper river channels, while accounting for only the vertical motion of rock due to rock uplift or denudation. However, natural landscapes often have more complicated histories, particularly in convergent orogens with asymmetric topography, where steady state requires that denudation must balance both vertical and horizontal rock motion. This thesis addresses this central issue by comparing the spatial and temporal pattern of denudation with metrics of topographic steepness in the Northern Apennine Mountains of Italy, a young and active orogen with asymmetric topography. New and existing catchment-averaged denudation rates from cosmogenic 10Be concentrations demonstrate that the steeper flank of the Northern Apennines is eroding more slowly than the gentler flank. Long-term denudation rates inverted from low-temperature thermochronometers show that this pattern of denudation across the orogen is long-lived, since at the least 3—5 Ma, and that denudation rates have decreased on the Ligurian side through time. The apparent decoupling between denudation rates and topography is resolved with a kinematic model of the orogenic wedge that accounts for the full vertical and horizontal rock velocity field. This model reconciles the 10Be concentrations, geomorphic observations, and geodetic rates of rock motion with the topography of the Northern Apennines, and provides new estimates for slab retreat rates consistent with recent estimates from tomography, surface geology, and morphology. This thesis also explores the partitioning of denudation into physical erosion and chemical weathering in the Northern Apennines. Chemical weathering in particular is an important control on landscape evolution and the global CO2 budget. Most studies have focused on weathering in orogens comprised of silicate-rich lithologies, which can remove CO2 from the atmosphere over geologic timescales, whereas carbonate weathering is generally considered to be CO2 neutral. However, even in silicate-rich landscapes, carbonate weathering dominates total solute fluxes. Recently uplifted orogens in particular are often characterized by carbonate-rich, marine sedimentary sequences, so the global weathering flux of carbon and calcium to the oceans should be more strongly influenced by these orogens. However, the partitioning of denudation fluxes remains largely unexplored in mixed lithology orogens, so, it is unclear whether the same processes that control erosion and weathering apply to both silicate-rich and mixed lithology settings. Here, denudation fluxes from the Northern Apennines are partitioned into carbonate and silicate chemical weathering and physical erosion fluxes. These fluxes demonstrate that denudation is dominated by physical erosion of both silicate and carbonate rocks; carbonate physical erosion is controlled by lithology; weathering fluxes are dominated by carbonate dissolution; and denudation is negatively correlated with runoff. Finally, denudation fluxes from the Northern Apennines are similar to other temperature mountain ranges (e.g. Southern Alps of New Zealand), although total weathering fluxes from this study are generally higher, due to greater carbonate weathering fluxes. The results from this thesis challenge current interpretations regarding denudation rates through space and time and contribute to a broader understanding of surface and crustal processes in the Northern Apennines.","published_in":"","year":"2008","subject_orig":"info:eu-repo/classification/ddc/550; Earth sciences","subject":"classification; Earth sciences","authors":"Erlanger, Erica","link":"http://hdl.handle.net/20.500.11850/393261","oa_state":"1","url":"0c57f833611c8bad0e4cdb5d68d592315ba3b85ef437932a5ff2db21790c934b","relevance":47,"resulttype":["Thesis: doctoral and postdoctoral"],"doi":"","cluster_labels":"Aplysina aerophoba, Bone cements, Cement production","x":-407.6043812452111,"y":-517.330375719018,"area_uri":1,"area":"Aplysina aerophoba, Bone cements, Cement production","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"0c57f833611c8bad0e4cdb5d68d592315ba3b85ef437932a5ff2db21790c934b","authors_list":["Erica Erlanger"],"authors_string":"Erica Erlanger","oa":true,"free_access":false,"oa_link":"http://hdl.handle.net/20.500.11850/393261","outlink":"http://hdl.handle.net/20.500.11850/393261","list_link":{"address":"http://hdl.handle.net/20.500.11850/393261","isDoi":false},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"info:eu-repo/classification/ddc/550; Earth sciences","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":-407.6043812452111,"zoomedY":-517.330375719018,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"102e53cc31c856e18170a1a7dbd35871d49dd80712a993aa32f717600fdbd281","relation":"OTOLOGY & NEUROTOLOGY; Cinar Z., Edizer D. T. , Yigit O., Altunay Z. O. , GÜL M., Atas A., \\"Does Calcium Dobesilate Have Therapeutic Effect on Gentamicin-induced Cochlear Nerve Ototoxicity? An Experimental Study\\", OTOLOGY & NEUROTOLOGY, cilt.41, 2020; 1531-7129; vv_1032021; av_b4b78ea8-face-41db-be48-1a8aa9300d2d; http://hdl.handle.net/20.500.12627/2022; https://doi.org/10.1097/mao.0000000000002820; 41; 10","identifier":"http://hdl.handle.net/20.500.12627/2022; https://doi.org/10.1097/mao.0000000000002820","title":"Does Calcium Dobesilate Have Therapeutic Effect on Gentamicin-induced Cochlear Nerve Ototoxicity? An Experimental Study","paper_abstract":"Hypothesis: The ototoxic effects of aminoglycosides are well known. Gentamicin carries a substantial risk of hearing loss. Gentamicin is widely used to combat life-threatening infections, despite its ototoxic effects. Calcium dobesilate is a pharmacologically active agent used to treat many disorders due to its vasoprotective and antioxidant effects. We investigated the therapeutic role of calcium dobesilate against gentamicin-induced cochlear nerve ototoxicity in an animal model. Methods: Thirty-two Sprague Dawley rats were divided into four groups: Gentamicin, Gentamicin + Calcium Dobesilate, Calcium Dobesilate, and Control. Preoperative and postoperative hearing thresholds were determined using auditory brainstem response thresholds with click and 16-kHz tone-burst stimuli. Histological analysis of the tympanic bulla specimens was performed under light and transmission electron microscopy. The histological findings were subjected to semiquantitative grading, of which the results were compared between the groups. Results: Gentamicin + Calcium Dobesilate group had, on average, 27 dB better click-evoked hearing than Gentamicin group (p 0.01). Histologically examining the Control and Calcium Dobesilate groups revealed normal ultrastructural appearances. The Gentamicin group showed the most severe histological alterations including myelin destruction, total axonal degeneration, and edema. The histological evidence of damage was significantly reduced in the Gentamicin + Calcium Dobesilate group compared with the Gentamicin group. Conclusion: Adding oral calcium dobesilate to systemic gentamicin was demonstrated to exert beneficial effects on click-evoked hearing thresholds, as supported by the histological findings.","published_in":"","year":"2010","subject_orig":"Cerrahi Tıp Bilimleri; Kulak Burun Boğaz; Dahili Tıp Bilimleri; Nöroloji; Sağlık Bilimleri; Tıp; Klinik Tıp (MED); Klinik Tıp; KLİNİK NEUROLOJİ","subject":"Cerrahi Tıp Bilimleri; Kulak Burun Boğaz; Dahili Tıp Bilimleri; Nöroloji; Sağlık Bilimleri; Tıp; Klinik Tıp (MED); Klinik Tıp; KLİNİK NEUROLOJİ","authors":"Yigit, Ozgur; Atas, Ahmet; Edizer, Deniz Tuna; Altunay, Zeynep Onerci; GÜL, MEHMET; Cinar, Zehra","link":"http://hdl.handle.net/20.500.12627/2022","oa_state":"2","url":"102e53cc31c856e18170a1a7dbd35871d49dd80712a993aa32f717600fdbd281","relevance":32,"resulttype":["Journal/newspaper article"],"doi":"","cluster_labels":"Calcium dobesilate, Calcium hydroxide, Sağlık Bilimleri","x":-295.86026785880813,"y":356.62839103116636,"area_uri":13,"area":"Calcium dobesilate, Calcium hydroxide, Sağlık Bilimleri","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"102e53cc31c856e18170a1a7dbd35871d49dd80712a993aa32f717600fdbd281","authors_list":["Ozgur Yigit","Ahmet Atas","Deniz Tuna Edizer","Zeynep Onerci Altunay","MEHMET GÜL","Zehra Cinar"],"authors_string":"Ozgur Yigit, Ahmet Atas, Deniz Tuna Edizer, Zeynep Onerci Altunay, MEHMET GÜL, Zehra Cinar","oa":false,"free_access":false,"oa_link":"http://hdl.handle.net/20.500.12627/2022","outlink":"http://hdl.handle.net/20.500.12627/2022","list_link":{"address":"http://hdl.handle.net/20.500.12627/2022","isDoi":false},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"Cerrahi Tıp Bilimleri; Kulak Burun Boğaz; Dahili Tıp Bilimleri; Nöroloji; Sağlık Bilimleri; Tıp; Klinik Tıp (MED); Klinik Tıp; KLİNİK NEUROLOJİ","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":-295.86026785880813,"zoomedY":356.62839103116636,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"105d3c6168ff9c861167d3bf7d23998b6f4736766e45abeef5a5e12dbbf98f9e","relation":"","identifier":"http://dx.doi.org/10.1016/j.jmrt.2020.10.054; https://api.elsevier.com/content/article/PII:S223878542031913X?httpAccept=text/xml; https://api.elsevier.com/content/article/PII:S223878542031913X?httpAccept=text/plain","title":"Fabrication of spherical Ti–6Al–4V powder for additive manufacturing by radio frequency plasma spheroidization and deoxidation using calcium","paper_abstract":"No abstract available","published_in":"Journal of Materials Research and Technology ; volume 9, issue 6, page 14792-14798 ; ISSN 2238-7854","year":"2011","subject_orig":"not available","subject":"additive manufacturing; al v; deoxidation calcium","authors":"Li, Jing; Hao, Zhenhua; Shu, Yongchun; He, Jilin","link":"http://dx.doi.org/10.1016/j.jmrt.2020.10.054","oa_state":"1","url":"105d3c6168ff9c861167d3bf7d23998b6f4736766e45abeef5a5e12dbbf98f9e","relevance":113,"resulttype":["Journal/newspaper article"],"doi":"https://dx.doi.org/10.1016/j.jmrt.2020.10.054","cluster_labels":"Additive manufacturing, Calcium soda, Glass Ceramics","x":129.41376462733248,"y":-38.75727326181964,"area_uri":5,"area":"Additive manufacturing, Calcium soda, Glass Ceramics","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"105d3c6168ff9c861167d3bf7d23998b6f4736766e45abeef5a5e12dbbf98f9e","authors_list":["Jing Li","Zhenhua Hao","Yongchun Shu","Jilin He"],"authors_string":"Jing Li, Zhenhua Hao, Yongchun Shu, Jilin He","oa":true,"free_access":false,"oa_link":"http://dx.doi.org/10.1016/j.jmrt.2020.10.054","outlink":"http://dx.doi.org/10.1016/j.jmrt.2020.10.054","list_link":{"address":"https://dx.doi.org/10.1016/j.jmrt.2020.10.054","isDoi":true},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"not available","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":129.41376462733248,"zoomedY":-38.75727326181964,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"115a4799c17b8ef4e5ffde14e8bc63588c6ab32e4fc68d0b2c2903df137197ab","relation":"Acevedo, A. Calidad del Agua para Consumo Humano en el municipio de Trubaco. Colombia, Bolívar, 2006 Aguilar, O y Navarro, B. Evaluación de la calidad de agua para consumo humano de la comunidad de Llañucancha del distrito de Abancay (tesis). UTLA, Abancay, 2018 Álvarez, A. Salud pública y medicina preventiva. México, En manual del libro, 1991. Aurazo, G. La Contaminación en el centro del país. Tambo – Huancayo, 2004. Camacho, A. Método para la determinación de bacterias coliformes, coliformes fecales y Escherichia Coli por la Técnica de dilución en tubo múltiple. México, 2009 Campoverde, J. Análisis del efecto toxicológico que provoca el consumo humano de agua no potable, mediante la determinación de cloro libre residual en aguas tratadas de las parroquias rurales del cantón Cuenca (tesis). Universidad estatal de Cuenca. Ecuador, 2015 Cava, T. Caracterización físico – química y microbiológica de agua para consumo humano de la localidad Las Juntas del distrito Pacora – Lambayeque (tesis). Perú: UNPRG, 2016 Chemical Company, N. &.Manual del Agua su Naturaleza, Tratamiento y Aplicaciones. México: McGraw-Hill/Interamericana, 2005. Comisión Económica para América Latina y El Caribe (CEPAL). Financiamiento e inversión para el desarrollo sostenible en América Latina y el Caribe: perspectivas regionales para instrumentar el Consenso de Monterrey y el Plan de Implementación de Johannesburgo. Santiago de Chile, Chile, 2002 Contreras, L. Contaminación de Aguas Superficiales por Residuos de Plaguicida en Venezuela y oros países de Latinoamérica. Venezuela, 2013. Crites, R. Tratamiento de Aguas Residuales en Pequeñas Poblaciones. Bogotá – Colombia, 2000. Daza, A. Talleres inductivos para mejorar el nivel de percepción y el nivel de conocimiento en torno a la calidad del agua potable en el distrito de Nueva Cajamarca. (tesis). UNSM, 2017”, DIGESA. Dirección General de Salud Ambiental. En Decreto Supremo N° 031-2010 (pág. 10). Lima – Perú, 2010 Dirección General de Salud Ambiental. Reglamento de la Calidad del Agua para Consumo Humano. Lima – Perú, 2010 Fawell & Nieuwenhuijsen. Evaluación bacteriológica de agua potable suministrada dentro de las escuelas del gobierno del distrito Patna. India, 2003 Flores, L. Contaminación Bacteriológica por Coliformes Totales, Coliformes Fecales, Escherichia Coli y Salmonella SP en Aguas Termales de alcance turístico de la región San Martín . San Martín, 2016. Galarraga, E. Algunos Aspectos Relacionados con microorganismo en agua potable. Revista Politécnica de Información Técnica Científica, 1984 Gil, E. Análisis Microbiológico y Químico de las Aguas y Técnicas de Muestreo, Facultad de Ciencias Biológicas. Universidad Nacional de Trujillo. Trujillo – Perú, 2010. Hernández, C. Detección de Salmonella y Coliformes Fecales en agua de uso agrícola para la producción de melón. México, 2008. Levine, A. &. Evaluación del agua para consumo humano. (tesis). UTEA. ABANCAY, 1998. Madigan, M. (2012). Biología de los microorganismos. Madrid - España: Pearson, 2012 Marco. Prueba de la conductividad eléctrica en la evaluación fisiológica de la calidad de zemillas zeyheria tuberculosa. brazil. 2014 Mendoza, M. Impacto de la tierra en la calidad del agua de la microcuenca rio Sábalos. Costa Rica: CATIE, 1996 Metcalf. Ingeniería de aguas residuales tratamiento vertido y reutilización. En Eddy Madrid - España: Mc Graw, 1995. Orellana, J. Características del Agua Potable. UTN – FRRO. Argentina, 2005 Organización Mundial de la Salud (OMS). Manual para el desarrollo planes de seguridad del agua: Metodología pormenorizada de gestión de riesgos para proveedores de agua de consumo. Ginebra – Suiza, 2009 Organización Panamericana de la Salud (OPS), Consideraciones sobre el programa medio ambiente y salud en el Istmo Centroamericano. San José, CR, 1993 Organización Mundial de la Salud. Guía para la Calidad del Agua Potable Organización Panamericana de la Salud. Guías para la Calidad del Agua Potable. Control de la Calidad del Agua Potable en Sistemas de Abastecimiento para Pequeñas Comunidades. Lima, 1998 Organización Panamericana de la Salud. Técnicas para la Construcción de Captaciones de Aguas Superficiales. Lima, 2004 Oviedo, A. Participación Ciudadana y Espacio Público. En Segovia y Dascal (2º ed.). Santiago de Chile: Ediciones SUR, 2002 Páez, L. Validación Secundaria del Método de Filtración por Membrana para la Detección de Coliformes Totales y Escherichia Coli en muestras de agua para consumo humano analizadas en el laboratorio de salud pública del Huila. Colombia, 2008. Ramírez, L. Aplicación de la educación ambiental para desarrollar una cultura sustentable del agua en el centro poblado Los Ángeles. Moyobamba. (tesis). UNSM, 2017 Reglamento de la Calidad del Agua para Consumo Humano (D.S.061-2010-SA) Rojas et al. La pequeña cuenca como abastecedora de agua. Santiago. República Dominicana, 2002 Romero. Equidad en el Acceso del Agua en la ciudad de Lima una mirada a partir del derecho humano al agua. Lima, 2010 Santos, J. Conocimiento en cuanto a la calidad del agua potable en tres sectores específicos de Montemorelos (tesis). UAM. México, 2015 Sawyer C & Mc Carty. Química para Ingeniería Ambiental. Colombia: Mc Graw Hill. 2001 Severiche & Gonzales. Evaluación para la determinación de sulfatos en aguas por métodos turbidiometrico modificado. Cartagena – Colombia, 2012 SUNASS. Resolución de Gerencia General N°037-2004. Vargas, L. Tratamiento de aguas de consumo humano. Lima.2008 Zarza, L. La guerra del agua, un futuro distópico no tan lejano. 2009; http://hdl.handle.net/11458/3789","identifier":"http://hdl.handle.net/11458/3789","title":"Participación comunitaria para mejorar la calidad del agua para consumo humano en asentamiento humano San Genaro, distrito de Chorrillos – Lima, 2019","paper_abstract":"En el presente trabajo de investigación, tuvo como objetivo determinar la influencia de la participación comunitaria en el mejoramiento de la calidad del agua para consumo humano en asentamiento humano San Genaro, para lo cual se analizaron los parámetros microbiológicos como son coliformes totales y termotolerantes y fisicoquímicos como son color, turbiedad, cloro residual y pH del agua antes de recibir el tratamiento que involucraba a participación comunitaria. Asimismo, se diseñó y aplicó una metodología apropiada para el tratamiento con hipoclorito de calcio al 70%. En la parte metodológica, se trabajó con un solo grupo bajo un diseño pre experimental con una muestra de 40 familias de las cuales se tomaron dos muestras de agua de un litro cada, las mismas que fueron llevadas al laboratorio para su análisis microbiológicos y físico químico de acuerdo a lo estipulado en el D.S. 031 – 2010. S.A. En cuanto a los resultados encontramos que antes del tratamiento en el domicilio el agua no era apta para el consumo humano dado que los parámetros microbiológicos, superaban los límites máximos permisibles. En el pos tratamiento no se logró que dichos parámetros se reduzcan a cero como lo establece la norma pero no se logró que dichos parámetros se reduzcan a cero como lo establece la norma pero se logró un avance significativo. En cuanto a los parámetros fisicoquímicos después del tratamiento todos se encontraron bajo los límites máximos permisibles. La metodología diseñada para capacitar en el uso adecuado y tratamiento del agua a nivel domiciliario, fue determinante para que los pobladores conozcan sobre el agua, y su tratamiento. ; This research aimed to determine the influence of community participation in the improvement of water quality for human consumption in the settlement “San Genaro”, to which the microbiological parameters of total coliforms, thermotolerants and physicochemicals such as color, turbidity, chlorine residual and pH of water were analyzed before applying the treatment that involves the community participation. It was also designed and applied an appropriate methodology of 70% calcium hypochlorite treatment. In the methodological part, it has been worked with a single group by the pre-experimCnta1 design with a sample of 40 families from those who two water of one liter each one were sampled, which were taken to the laboratory for the microbiological and physical- chemical analysis as it was stipulated in D.S. 031 — 2010. S.A. Regarding the results it was found that before the treatment in households the water was not suitable for human consumption since the microbiological parameters exceeded the maximum permissible limits. The post-treatment did not reduce these parameters to zero as it is set forth in the standard, but a significant progress was made. As for the physical- chemical parameters after the treatment all the parameters were found under the maximum permissible limits. The methodology which was designed to train people in the appropriately to a given use and treatment of water in the households was decisive for the settlers to know about water and its treatment. ; Tesis ; Apa","published_in":"Universidad Nacional de San Martín - Tarapoto ; Repositorio Digital UNSM - T","year":"2012","subject_orig":"agua potable; calidad; coliformes; tratamiento; ; Drinking water; quality; coliforms; treatment","subject":"agua potable; calidad; coliformes; tratamiento; ; Drinking water; quality; coliforms; treatment","authors":"Pinedo Pérez, Ray Freddy","link":"http://hdl.handle.net/11458/3789","oa_state":"1","url":"115a4799c17b8ef4e5ffde14e8bc63588c6ab32e4fc68d0b2c2903df137197ab","relevance":41,"resulttype":["Thesis: bachelor"],"doi":"","cluster_labels":"Calcio por","x":-738.9105040968409,"y":-83.38616017384305,"area_uri":14,"area":"Calcio por","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"115a4799c17b8ef4e5ffde14e8bc63588c6ab32e4fc68d0b2c2903df137197ab","authors_list":["Ray Freddy Pinedo Pérez"],"authors_string":"Ray Freddy Pinedo Pérez","oa":true,"free_access":false,"oa_link":"http://hdl.handle.net/11458/3789","outlink":"http://hdl.handle.net/11458/3789","list_link":{"address":"http://hdl.handle.net/11458/3789","isDoi":false},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"agua potable; calidad; coliformes; tratamiento; ; Drinking water; quality; coliforms; treatment","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":-738.9105040968409,"zoomedY":-83.38616017384305,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"173c2872c0fec35d6d776d2d5d630c9791137c2fe35c19ef0a69294004752b3a","relation":"","identifier":"http://dx.doi.org/10.1016/j.jcrc.2020.05.005; https://api.elsevier.com/content/article/PII:S088394412030561X?httpAccept=text/xml; https://api.elsevier.com/content/article/PII:S088394412030561X?httpAccept=text/plain","title":"Determinants of Total/ionized Calcium in patients undergoing citrate CVVH: A retrospective observational study","paper_abstract":"No abstract available","published_in":"Journal of Critical Care ; volume 59, page 16-22 ; ISSN 0883-9441","year":"2013","subject_orig":"Critical Care and Intensive Care Medicine","subject":"Critical Care and Intensive Care Medicine","authors":"Boer, Willem; van Tornout, Mathias; Solmi, Francesca; Willaert, Xavier; Schetz, Miet; Oudemans-van Straaten, Heleen","link":"http://dx.doi.org/10.1016/j.jcrc.2020.05.005","oa_state":"2","url":"173c2872c0fec35d6d776d2d5d630c9791137c2fe35c19ef0a69294004752b3a","relevance":63,"resulttype":["Journal/newspaper article"],"doi":"https://dx.doi.org/10.1016/j.jcrc.2020.05.005","cluster_labels":"Cardiology and Cardiovascular medicine, Anesthesiology and Pain medicine, Biomedical engineering","x":113.52177685316846,"y":358.1048400696528,"area_uri":6,"area":"Cardiology and Cardiovascular medicine, Anesthesiology and Pain medicine, Biomedical engineering","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"173c2872c0fec35d6d776d2d5d630c9791137c2fe35c19ef0a69294004752b3a","authors_list":["Willem Boer","Mathias van Tornout","Francesca Solmi","Xavier Willaert","Miet Schetz","Heleen Oudemans-van Straaten"],"authors_string":"Willem Boer, Mathias van Tornout, Francesca Solmi, Xavier Willaert, Miet Schetz, Heleen Oudemans-van Straaten","oa":false,"free_access":false,"oa_link":"http://dx.doi.org/10.1016/j.jcrc.2020.05.005","outlink":"http://dx.doi.org/10.1016/j.jcrc.2020.05.005","list_link":{"address":"https://dx.doi.org/10.1016/j.jcrc.2020.05.005","isDoi":true},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"Critical Care and Intensive Care Medicine","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":113.52177685316846,"zoomedY":358.1048400696528,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"18aa40d6effaf4a9d7e2a90c08bb839f913a0c2f61f0d6305490c13fff550864","relation":"http://repository.ust.hk/ir/Record/1783.1-105762; Journal of Infection in Developing Countries, v. 14, (8), August 2020, p. 908-917; 2036-6590; https://doi.org/10.3855/jidc.12341; http://lbdiscover.ust.hk/uresolver?url_ver=Z39.88-2004&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rfr_id=info:sid/HKUST:SPI&rft.genre=article&rft.issn=2036-6590&rft.volume=v. 14&rft.issue=(8)&rft.date=2020&rft.spage=908&rft.aulast=He&rft.aufirst=W.&rft.atitle=Hypocalcemia+in+sepsis%3A+Analysis+of+the+subcellular+distribution+of+Ca2%2B+in+septic+rats+and+LPS%2FTNF-%CE%B1-treated+HUVECs&rft.title=Journal+of+Infection+in+Developing+Countries; http://www.scopus.com/record/display.url?eid=2-s2.0-85090819023&origin=inward; http://gateway.isiknowledge.com/gateway/Gateway.cgi?GWVersion=2&SrcAuth=LinksAMR&SrcApp=PARTNER_APP&DestLinkType=FullRecord&DestApp=WOS&KeyUT=000571485000016","identifier":"http://repository.ust.hk/ir/Record/1783.1-105762; https://doi.org/10.3855/jidc.12341; http://lbdiscover.ust.hk/uresolver?url_ver=Z39.88-2004&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rfr_id=info:sid/HKUST:SPI&rft.genre=article&rft.issn=2036-6590&rft.volume=v. 14&rft.issue=(8)&rft.date=2020&rft.spage=908&rft.aulast=He&rft.aufirst=W.&rft.atitle=Hypocalcemia+in+sepsis%3A+Analysis+of+the+subcellular+distribution+of+Ca2%2B+in+septic+rats+and+LPS%2FTNF-%CE%B1-treated+HUVECs&rft.title=Journal+of+Infection+in+Developing+Countries; http://www.scopus.com/record/display.url?eid=2-s2.0-85090819023&origin=inward; http://gateway.isiknowledge.com/gateway/Gateway.cgi?GWVersion=2&SrcAuth=LinksAMR&SrcApp=PARTNER_APP&DestLinkType=FullRecord&DestApp=WOS&KeyUT=000571485000016","title":"Hypocalcemia in sepsis: Analysis of the subcellular distribution of Ca 2+ in septic rats and LPS/TNF-α-treated HUVECs","paper_abstract":"Introduction: Hypocalcemia has been widely recognized in sepsis patients. However, the cause of hypocalcemia in sepsis is still not clear, and little is known about the subcellular distribution of Ca2+ in tissues during sepsis. Methodology: We measured the dynamic change in Ca2+ levels in body fluid and subcellular compartments, including the cytosol, endoplasmic reticulum and mitochondria, in major organs of cecal ligation and puncture (CLP)-operated rats, as well as the subcellular Ca2+ flux in HUVECs which treated by endotoxin and cytokines. Results: In the model of CLP-induced sepsis, the blood and urinary Ca2+ concentrations decreased rapidly, while the Ca2+ concentration in ascites fluid increased. The Ca2+ concentrations in the cytosol, ER, and mitochondria were elevated nearly synchronously in major organs in our sepsis model. Moreover, the calcium overload in CLP-operated rats treated with calcium supplementation was more severe than that in the non-calcium-supplemented rats but was alleviated by treatment with the calcium channel blocker verapamil. Similar subcellular Ca2+ flux was found in vitro in HUVECs and was triggered by lipopolysaccharide (LPS)/TNF-α. Conclusions: Ca2+ influx from the blood into the intercellular space and Ca2+ release into ascites fluid may cause hypocalcemia in sepsis and that this process may be due to the synergistic effect of endotoxin and cytokines. Copyright © 2020 He et al.","published_in":"","year":"2014","subject_orig":"Calcium overload; Hypocalcemia; Mechanism; Sepsis; Subcellular redistribution","subject":"Calcium overload; Hypocalcemia; Mechanism; Sepsis; Subcellular redistribution","authors":"He, Wencheng; Huang, Lei; Luo, Hua; Zang, Yang; An, Youzhong; Zhang, Weixing","link":"http://repository.ust.hk/ir/Record/1783.1-105762","oa_state":"2","url":"18aa40d6effaf4a9d7e2a90c08bb839f913a0c2f61f0d6305490c13fff550864","relevance":44,"resulttype":["Journal/newspaper article"],"doi":"","cluster_labels":"Aplysina aerophoba, Bone cements, Cement production","x":-289.08592214893275,"y":474.95500137890565,"area_uri":1,"area":"Aplysina aerophoba, Bone cements, Cement production","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"18aa40d6effaf4a9d7e2a90c08bb839f913a0c2f61f0d6305490c13fff550864","authors_list":["Wencheng He","Lei Huang","Hua Luo","Yang Zang","Youzhong An","Weixing Zhang"],"authors_string":"Wencheng He, Lei Huang, Hua Luo, Yang Zang, Youzhong An, Weixing Zhang","oa":false,"free_access":false,"oa_link":"http://repository.ust.hk/ir/Record/1783.1-105762","outlink":"http://repository.ust.hk/ir/Record/1783.1-105762","list_link":{"address":"http://repository.ust.hk/ir/Record/1783.1-105762","isDoi":false},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"Calcium overload; Hypocalcemia; Mechanism; Sepsis; Subcellular redistribution","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":-289.08592214893275,"zoomedY":474.95500137890565,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"18b910ac555e6516759bcb401c9b8bcecf61710b27475b59d2c283850dae4b0b","relation":"","identifier":"http://dx.doi.org/10.1016/j.bbadis.2020.165682; https://api.elsevier.com/content/article/PII:S0925443920300211?httpAccept=text/xml; https://api.elsevier.com/content/article/PII:S0925443920300211?httpAccept=text/plain","title":"Disturbance of bioenergetics and calcium homeostasis provoked by metabolites accumulating in propionic acidemia in heart mitochondria of developing rats","paper_abstract":"No abstract available","published_in":"Biochimica et Biophysica Acta (BBA) - Molecular Basis of Disease ; volume 1866, issue 5, page 165682 ; ISSN 0925-4439","year":"2014","subject_orig":"Molecular Medicine; Molecular Biology","subject":"Molecular Medicine; Molecular Biology","authors":"Roginski, Ana Cristina; Wajner, Alessandro; Cecatto, Cristiane; Wajner, Simone Magagnin; Castilho, Roger Frigério; Wajner, Moacir; Amaral, Alexandre Umpierrez","link":"http://dx.doi.org/10.1016/j.bbadis.2020.165682","oa_state":"2","url":"18b910ac555e6516759bcb401c9b8bcecf61710b27475b59d2c283850dae4b0b","relevance":85,"resulttype":["Journal/newspaper article"],"doi":"https://dx.doi.org/10.1016/j.bbadis.2020.165682","cluster_labels":"Cardiology and Cardiovascular medicine, Anesthesiology and Pain medicine, Biomedical engineering","x":333.7840764552536,"y":412.915086704248,"area_uri":6,"area":"Cardiology and Cardiovascular medicine, Anesthesiology and Pain medicine, Biomedical engineering","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"18b910ac555e6516759bcb401c9b8bcecf61710b27475b59d2c283850dae4b0b","authors_list":["Ana Cristina Roginski","Alessandro Wajner","Cristiane Cecatto","Simone Magagnin Wajner","Roger Frigério Castilho","Moacir Wajner","Alexandre Umpierrez Amaral"],"authors_string":"Ana Cristina Roginski, Alessandro Wajner, Cristiane Cecatto, Simone Magagnin Wajner, Roger Frigério Castilho, Moacir Wajner, Alexandre Umpierrez Amaral","oa":false,"free_access":false,"oa_link":"http://dx.doi.org/10.1016/j.bbadis.2020.165682","outlink":"http://dx.doi.org/10.1016/j.bbadis.2020.165682","list_link":{"address":"https://dx.doi.org/10.1016/j.bbadis.2020.165682","isDoi":true},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"Molecular Medicine; Molecular Biology","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":333.7840764552536,"zoomedY":412.915086704248,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"18cabd2db11b6c2f6108b9fb11d07ce9ec55f2b3037f6cac6e1ea00710728958","relation":"info:eu-repo/grantAgreement/RSF//18-13-00220; Electrochemical method for isolation of chitinous 3D scaffolds from cultivated Aplysina aerophoba marine demosponge and its biomimetic application / K. Nowacki, I. Stępniak, T. Machałowski, M. Wysokowski, et al. . — DOI 10.1007/s00339-020-03533-2 // Applied Physics A: Materials Science and Processing. — 2020. — Vol. 5. — Iss. 126. — 368.; 0947-8396; https://link.springer.com/content/pdf/10.1007/s00339-020-03533-2.pdf; 1; 38868361-3cfe-459c-a6e6-38487816c83a; http://www.scopus.com/inward/record.url?partnerID=8YFLogxK&scp=85083983339; http://hdl.handle.net/10995/90559; https://elar.urfu.ru/handle/10995/90559; doi:10.1007/s00339-020-03533-2; 85083983339; 000530377600001","identifier":"https://elar.urfu.ru/handle/10995/90559; https://link.springer.com/content/pdf/10.1007/s00339-020-03533-2.pdf; http://www.scopus.com/inward/record.url?partnerID=8YFLogxK&scp=85083983339; http://hdl.handle.net/10995/90559; https://doi.org/10.1007/s00339-020-03533-2","title":"Electrochemical method for isolation of chitinous 3D scaffolds from cultivated Aplysina aerophoba marine demosponge and its biomimetic application","paper_abstract":"Three-dimensional (3D) biopolymer-based scaffolds including chitinous matrices have been widely used for tissue engineering, regenerative medicine and other modern interdisciplinary fields including extreme biomimetics. In this study, we introduce a novel, electrochemically assisted method for 3D chitin scaffolds isolation from the cultivated marine demosponge Aplysina aerophoba which consists of three main steps: (1) decellularization, (2) decalcification and (3) main deproteinization along with desilicification and depigmentation. For the first time, the obtained electrochemically isolated 3D chitinous scaffolds have been further biomineralized ex vivo using hemolymph of Cornu aspersum edible snail aimed to generate calcium carbonates-based layered biomimetic scaffolds. The analysis of prior to, during and post-electrochemical isolation samples as well as samples treated with molluscan hemolymph was conducted employing analytical techniques such as SEM, XRD, ATR–FTIR and Raman spectroscopy. Finally, the use of described method for chitin isolation combined with biomineralization ex vivo resulted in the formation of crystalline (calcite) calcium carbonate-based deposits on the surface of chitinous scaffolds, which could serve as promising biomaterials for the wide range of biomedical, environmental and biomimetic applications. © 2020, The Author(s). ; Politechnika PoznaÅ ska, PUT: 0911/SBAD/0380/2019 ; Deutsche Forschungsgemeinschaft, DFG: HE 394/3 ; Deutscher Akademischer Austauschdienst, DAAD ; Russian Science Foundation, RSF: 18-13-00220 ; PPN/BEK/2018/1/00071 ; 03/32/SBAD/0906 ; Sächsisches Staatsministerium für Wissenschaft und Kunst, SMWK: 02010311 ; This work was performed with the financial support of Poznan University of Technology, Poland (Grant No. 0911/SBAD/0380/2019), as well as by the Ministry of Science and Higher Education (Poland) as financial subsidy to PUT No. 03/32/SBAD/0906. Krzysztof Nowacki was supported by the Erasmus Plus program (2019). Also, this study was partially supported by the DFG Project HE 394/3 and SMWK Project No. 02010311 (Germany). Marcin Wysokowski is financially supported by the Polish National Agency for Academic Exchange (PPN/BEK/2018/1/00071). Tomasz Machałowski is supported by DAAD (Personal Ref. No. 91734605). Yuliya Khrunyk is supported by the Russian Science Foundation (Grant No. 18-13-00220).","published_in":"Applied Physics A: Materials Science and Processing","year":"2014","subject_orig":"APLYSINA AEROPHOBA; BIOMIMETICS; BIOMINERALIZATION; CHITIN; ELECTROLYSIS; HEMOLYMPH; MARINE SPONGES; SCAFFOLDS; BIOMIMETIC PROCESSES; BIOPOLYMERS; BLOOD; CALCITE; CALCIUM CARBONATE; FOURIER TRANSFORM INFRARED SPECTROSCOPY; BIOMIMETIC SCAFFOLDS; DECELLULARIZATION; DEPROTEINIZATION; DESILICIFICATION; ELECTROCHEMICAL METHODS; INTERDISCIPLINARY FIELDS; THREEDIMENSIONAL (3-D); SCAFFOLDS (BIOLOGY)","subject":"APLYSINA AEROPHOBA; BIOMIMETICS; BIOMINERALIZATION; CHITIN; ELECTROLYSIS; HEMOLYMPH; MARINE SPONGES; SCAFFOLDS; BIOMIMETIC PROCESSES; BIOPOLYMERS; BLOOD; CALCITE; CALCIUM CARBONATE; FOURIER TRANSFORM INFRARED SPECTROSCOPY; BIOMIMETIC SCAFFOLDS; DECELLULARIZATION; DEPROTEINIZATION; DESILICIFICATION; ELECTROCHEMICAL METHODS; INTERDISCIPLINARY FIELDS; THREEDIMENSIONAL (3-D); SCAFFOLDS (BIOLOGY)","authors":"Nowacki, K.; Stępniak, I.; Machałowski, T.; Wysokowski, M.; Petrenko, I.; Schimpf, C.; Rafaja, D.; Langer, E.; Richter, A.; Ziętek, J.; Pantović, S.; Voronkina, A.; Kovalchuk, V.; Ivanenko, V.; Khrunyk, Y.; Galli, R.; Joseph, Y.; Gelinsky, M.; Jesionowski, T.; Ehrlich, H.","link":"https://elar.urfu.ru/handle/10995/90559","oa_state":"1","url":"18cabd2db11b6c2f6108b9fb11d07ce9ec55f2b3037f6cac6e1ea00710728958","relevance":119,"resulttype":["Journal/newspaper article"],"doi":"","cluster_labels":"Aplysina aerophoba, Bone cements, Cement production","x":-378.56966126291104,"y":-256.2991357415894,"area_uri":1,"area":"Aplysina aerophoba, Bone cements, Cement production","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"18cabd2db11b6c2f6108b9fb11d07ce9ec55f2b3037f6cac6e1ea00710728958","authors_list":["K. Nowacki","I. Stępniak","T. Machałowski","M. Wysokowski","I. Petrenko","C. Schimpf","D. Rafaja","E. Langer","A. Richter","J. Ziętek","S. Pantović","A. Voronkina","V. Kovalchuk","V. Ivanenko","Y. Khrunyk","R. Galli","Y. Joseph","M. Gelinsky","T. Jesionowski","H. Ehrlich"],"authors_string":"K. Nowacki, I. Stępniak, T. Machałowski, M. Wysokowski, I. Petrenko, C. Schimpf, D. Rafaja, E. Langer, A. Richter, J. Ziętek, S. Pantović, A. Voronkina, V. Kovalchuk, V. Ivanenko, Y. Khrunyk, R. Galli, Y. Joseph, M. Gelinsky, T. Jesionowski, H. Ehrlich","oa":true,"free_access":false,"oa_link":"https://elar.urfu.ru/handle/10995/90559","outlink":"https://elar.urfu.ru/handle/10995/90559","list_link":{"address":"https://elar.urfu.ru/handle/10995/90559","isDoi":false},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"APLYSINA AEROPHOBA; BIOMIMETICS; BIOMINERALIZATION; CHITIN; ELECTROLYSIS; HEMOLYMPH; MARINE SPONGES; SCAFFOLDS; BIOMIMETIC PROCESSES; BIOPOLYMERS; BLOOD; CALCITE; CALCIUM CARBONATE; FOURIER TRANSFORM INFRARED SPECTROSCOPY; BIOMIMETIC SCAFFOLDS; DECELLULARIZATION; DEPROTEINIZATION; DESILICIFICATION; ELECTROCHEMICAL METHODS; INTERDISCIPLINARY FIELDS; THREEDIMENSIONAL (3-D); SCAFFOLDS (BIOLOGY)","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":-378.56966126291104,"zoomedY":-256.2991357415894,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"19a932b519a5e80af6a11b9ba1972bda68582a4821983fc35e0c36c798ff5304","relation":"","identifier":"http://dx.doi.org/10.1016/j.bja.2020.11.020; https://api.elsevier.com/content/article/PII:S0007091220309417?httpAccept=text/xml; https://api.elsevier.com/content/article/PII:S0007091220309417?httpAccept=text/plain","title":"Association between ionised calcium and severity of postpartum haemorrhage: a retrospective cohort study","paper_abstract":"No abstract available","published_in":"British Journal of Anaesthesia ; ISSN 0007-0912","year":"2016","subject_orig":"Anesthesiology and Pain Medicine","subject":"Anesthesiology and Pain Medicine","authors":"Epstein, Danny; Solomon, Neta; Korytny, Alexander; Marcusohn, Erez; Freund, Yaacov; Avrahami, Ron; Neuberger, Ami; Raz, Aeyal; Miller, Asaf","link":"http://dx.doi.org/10.1016/j.bja.2020.11.020","oa_state":"2","url":"19a932b519a5e80af6a11b9ba1972bda68582a4821983fc35e0c36c798ff5304","relevance":80,"resulttype":["Journal/newspaper article"],"doi":"https://dx.doi.org/10.1016/j.bja.2020.11.020","cluster_labels":"Cardiology and Cardiovascular medicine, Anesthesiology and Pain medicine, Biomedical engineering","x":77.17433271369153,"y":548.9759877351977,"area_uri":6,"area":"Cardiology and Cardiovascular medicine, Anesthesiology and Pain medicine, Biomedical engineering","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"19a932b519a5e80af6a11b9ba1972bda68582a4821983fc35e0c36c798ff5304","authors_list":["Danny Epstein","Neta Solomon","Alexander Korytny","Erez Marcusohn","Yaacov Freund","Ron Avrahami","Ami Neuberger","Aeyal Raz","Asaf Miller"],"authors_string":"Danny Epstein, Neta Solomon, Alexander Korytny, Erez Marcusohn, Yaacov Freund, Ron Avrahami, Ami Neuberger, Aeyal Raz, Asaf Miller","oa":false,"free_access":false,"oa_link":"http://dx.doi.org/10.1016/j.bja.2020.11.020","outlink":"http://dx.doi.org/10.1016/j.bja.2020.11.020","list_link":{"address":"https://dx.doi.org/10.1016/j.bja.2020.11.020","isDoi":true},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"Anesthesiology and Pain Medicine","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":77.17433271369153,"zoomedY":548.9759877351977,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"1bf85b5d4283034512f4f98547edd85e4e24688520d6a8c30bfb5570bfaf46e4","relation":"","identifier":"http://dx.doi.org/10.1016/j.ecoenv.2020.110382; https://api.elsevier.com/content/article/PII:S0147651320302219?httpAccept=text/xml; https://api.elsevier.com/content/article/PII:S0147651320302219?httpAccept=text/plain","title":"Mechanism of deoxynivalenol-induced neurotoxicity in weaned piglets is linked to lipid peroxidation, dampened neurotransmitter levels, and interference with calcium signaling","paper_abstract":"No abstract available","published_in":"Ecotoxicology and Environmental Safety ; volume 194, page 110382 ; ISSN 0147-6513","year":"2018","subject_orig":"Public Health, Environmental and Occupational Health; Pollution; Health, Toxicology and Mutagenesis; General Medicine","subject":"Public Health, Environmental and Occupational Health; Pollution; Health, Toxicology and Mutagenesis; General Medicine","authors":"Wang, Xichun; Chen, Xiaofang; Cao, Li; Zhu, Lei; Zhang, Yafei; Chu, Xiaoyan; Zhu, Dianfeng; Rahman, Sajid ur; Peng, Chenglu; Feng, Shibin; Li, Yu; Wu, Jinjie","link":"http://dx.doi.org/10.1016/j.ecoenv.2020.110382","oa_state":"2","url":"1bf85b5d4283034512f4f98547edd85e4e24688520d6a8c30bfb5570bfaf46e4","relevance":89,"resulttype":["Journal/newspaper article"],"doi":"https://dx.doi.org/10.1016/j.ecoenv.2020.110382","cluster_labels":"Health, Toxicology and Mutagenesis, Pollution, Public health, Environmental and Occupational health","x":589.2537638381383,"y":-123.9600378228878,"area_uri":11,"area":"Health, Toxicology and Mutagenesis, Pollution, Public health, Environmental and Occupational health","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"1bf85b5d4283034512f4f98547edd85e4e24688520d6a8c30bfb5570bfaf46e4","authors_list":["Xichun Wang","Xiaofang Chen","Li Cao","Lei Zhu","Yafei Zhang","Xiaoyan Chu","Dianfeng Zhu","Sajid ur Rahman","Chenglu Peng","Shibin Feng","Yu Li","Jinjie Wu"],"authors_string":"Xichun Wang, Xiaofang Chen, Li Cao, Lei Zhu, Yafei Zhang, Xiaoyan Chu, Dianfeng Zhu, Sajid ur Rahman, Chenglu Peng, Shibin Feng, Yu Li, Jinjie Wu","oa":false,"free_access":false,"oa_link":"http://dx.doi.org/10.1016/j.ecoenv.2020.110382","outlink":"http://dx.doi.org/10.1016/j.ecoenv.2020.110382","list_link":{"address":"https://dx.doi.org/10.1016/j.ecoenv.2020.110382","isDoi":true},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"Public Health, Environmental and Occupational Health; Pollution; Health, Toxicology and Mutagenesis; General Medicine","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":589.2537638381383,"zoomedY":-123.9600378228878,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"1ce5c57da3f48098e0080fe373ba47f951aef0902db3c54a2fe97cc3033b9ca6","relation":"","identifier":"http://dx.doi.org/10.1016/j.ijhydene.2020.01.243; https://api.elsevier.com/content/article/PII:S0360319920304389?httpAccept=text/xml; https://api.elsevier.com/content/article/PII:S0360319920304389?httpAccept=text/plain","title":"A novel hybrid iron-calcium catalyst/absorbent for enhanced hydrogen production via catalytic tar reforming with in-situ CO2 capture","paper_abstract":"No abstract available","published_in":"International Journal of Hydrogen Energy ; volume 45, issue 18, page 10709-10723 ; ISSN 0360-3199","year":"2018","subject_orig":"Fuel Technology; Renewable Energy, Sustainability and the Environment; Energy Engineering and Power Technology; Condensed Matter Physics","subject":"Fuel Technology; Renewable Energy, Sustainability and the Environment; Energy Engineering and Power Technology; Condensed Matter Physics","authors":"Han, Long; Liu, Qi; Zhang, Yuan; Lin, Kang; Xu, Guoqiang; Wang, Qinhui; Rong, Nai; Liang, Xiaorui; Feng, Yi; Wu, Pingjiang; Ma, Kaili; Xia, Jia; Zhang, Chengkun; Zhong, Yingjie","link":"http://dx.doi.org/10.1016/j.ijhydene.2020.01.243","oa_state":"2","url":"1ce5c57da3f48098e0080fe373ba47f951aef0902db3c54a2fe97cc3033b9ca6","relevance":49,"resulttype":["Journal/newspaper article"],"doi":"https://dx.doi.org/10.1016/j.ijhydene.2020.01.243","cluster_labels":"Energy engineering and power technology, Fuel technology, Renewable energy, Sustainability and the environment","x":302.5594585224438,"y":-451.1359813831703,"area_uri":7,"area":"Energy engineering and power technology, Fuel technology, Renewable energy, Sustainability and the environment","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"1ce5c57da3f48098e0080fe373ba47f951aef0902db3c54a2fe97cc3033b9ca6","authors_list":["Long Han","Qi Liu","Yuan Zhang","Kang Lin","Guoqiang Xu","Qinhui Wang","Nai Rong","Xiaorui Liang","Yi Feng","Pingjiang Wu","Kaili Ma","Jia Xia","Chengkun Zhang","Yingjie Zhong"],"authors_string":"Long Han, Qi Liu, Yuan Zhang, Kang Lin, Guoqiang Xu, Qinhui Wang, Nai Rong, Xiaorui Liang, Yi Feng, Pingjiang Wu, Kaili Ma, Jia Xia, Chengkun Zhang, Yingjie Zhong","oa":false,"free_access":false,"oa_link":"http://dx.doi.org/10.1016/j.ijhydene.2020.01.243","outlink":"http://dx.doi.org/10.1016/j.ijhydene.2020.01.243","list_link":{"address":"https://dx.doi.org/10.1016/j.ijhydene.2020.01.243","isDoi":true},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"Fuel Technology; Renewable Energy, Sustainability and the Environment; Energy Engineering and Power Technology; Condensed Matter Physics","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":302.5594585224438,"zoomedY":-451.1359813831703,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642},{"id":"1df4dc2b7f978c7e018f4126c3a21a6db0eaa22f1bc573a77324e2c2fa4eca09","relation":"","identifier":"http://dx.doi.org/10.1016/j.jdent.2020.103370; https://api.elsevier.com/content/article/PII:S0300571220301160?httpAccept=text/xml; https://api.elsevier.com/content/article/PII:S0300571220301160?httpAccept=text/plain","title":"Retreatment efficacy of hydraulic calcium silicate sealers used in single cone obturation","paper_abstract":"No abstract available","published_in":"Journal of Dentistry ; volume 98, page 103370 ; ISSN 0300-5712","year":"2020","subject_orig":"General Dentistry","subject":"General Dentistry","authors":"Garrib, M.; Camilleri, J.","link":"http://dx.doi.org/10.1016/j.jdent.2020.103370","oa_state":"2","url":"1df4dc2b7f978c7e018f4126c3a21a6db0eaa22f1bc573a77324e2c2fa4eca09","relevance":117,"resulttype":["Journal/newspaper article"],"doi":"https://dx.doi.org/10.1016/j.jdent.2020.103370","cluster_labels":"General Dentistry, Calcium silicate","x":267.02866723546236,"y":60.119337594951375,"area_uri":3,"area":"General Dentistry, Calcium silicate","comments":[],"readers":0,"tags":[],"bkl_caption":"not available","file_hash":"hashHash","safe_id":"1df4dc2b7f978c7e018f4126c3a21a6db0eaa22f1bc573a77324e2c2fa4eca09","authors_list":["M. Garrib","J. Camilleri"],"authors_string":"M. Garrib, J. Camilleri","oa":false,"free_access":false,"oa_link":"http://dx.doi.org/10.1016/j.jdent.2020.103370","outlink":"http://dx.doi.org/10.1016/j.jdent.2020.103370","list_link":{"address":"https://dx.doi.org/10.1016/j.jdent.2020.103370","isDoi":true},"comments_for_filtering":"","num_readers":0,"internal_readers":1,"keywords":"General Dentistry","classification":"not available","diameter":27.692307692307693,"width":20.60884820866848,"height":27.478464278224642,"zoomedX":267.02866723546236,"zoomedY":60.119337594951375,"zoomedWidth":20.60884820866848,"zoomedHeight":27.478464278224642}]'; export default JSON.parse(data); @@ -6,7 +7,7 @@ const rawAreas = `[{"area_uri":1,"title":"Aplysina aerophoba, Bone cements, Ceme export const areas = JSON.parse(rawAreas); -const config = `{"render_list":true,"render_map":true,"scale_toolbar":false,"is_authorview":false,"content_based":true,"is_streamgraph":false,"tag":"visualization","min_height":600,"min_width":600,"max_height":1000,"multiples_size":600,"padding_articles":0,"circle_padding":0,"reference_size":650,"max_diameter_size":50,"min_diameter_size":30,"max_area_size":110,"min_area_size":50,"bubble_min_scale":1,"bubble_max_scale":1,"paper_min_scale":1,"paper_max_scale":1,"dynamic_sizing":false,"dogear_width":0.1,"dogear_height":0.1,"paper_width_factor":1.2,"paper_height_factor":1.6,"paper_readers_height_factor":0.2,"paper_metadata_height_correction":25,"is_force_areas":true,"area_force_alpha":0.02,"is_force_papers":true,"papers_force_alpha":0.1,"dynamic_force_area":false,"dynamic_force_papers":false,"preview_image_width_list":230,"preview_image_height_list":298,"preview_image_width":738,"preview_image_height":984,"zoom_factor":0.9,"transition_duration":750,"zoomout_transition":750,"mode":"search_repos","backend":"legacy","language":"eng_pubmed","hyphenation_language":"en","use_hypothesis":true,"service":"base","canonical_url":null,"intro":{"title":"What's this?","body":"<div style=\\"max-width: 1000px; width: 100%;\\"><div id=\\"whatsthis-page\\"> <p class=\\"wtp\\">This <b><span style=\\"color:#e55137\\">beta</span> version of Open Knowledge Maps</b> presents you with a topical overview of research on <b>digital education</b> based on 100 papers taken from <b>BASE</b>. <a class=\\"underline\\" href=\\"http://base-search.net\\" target=\\"_blank \\">BASE</a> provides access to over 100 million documents from more than 5,200 content sources in all disciplines. </p> <p class=\\"wtp\\">We use text similarity to create a knowledge map. The algorithm groups those papers together that have many words in common. Knowledge maps provide an instant overview of a topic by showing the main areas at a glance, and papers related to each area. This makes it possible to easily identify useful, pertinent information. Please <a target=\\"_blank\\" class=\\"underline\\" href=\\"faq\\">check out our FAQs</a> for more information.</p> <p><a target=\\"_blank\\" class=\\"underline\\" href=\\"http://eepurl.com/dvQeGP\\">Sign-up for our newsletter</a> to receive occasional updates on our latest improvements.</p> <p><b>We need your feedback!</b><br><a target=\\"_blank\\" class=\\"underline\\" href=\\"about\\">Open Knowledge Maps</a> is a non-profit organisation run by a group of dedicated volunteers. In order to improve our free service, we need your support. Please send us your feedback to <a style=\\"text-decoration: underline;\\" href=\\"mailto:info@openknowledgemaps.org\\">info@openknowledgemaps.org</a></p> </div></div>"},"show_intro":false,"show_loading_screen":false,"is_evaluation":true,"evaluation_service":["ga","matomo"],"enable_mouseover_evaluation":false,"is_adaptive":false,"credit_embed":false,"use_area_uri":true,"url_prefix":"https://www.base-search.net/Record/","url_prefix_datasets":null,"input_format":"csv","base_unit":"citations","preview_type":"pdf","convert_author_names":true,"debug":false,"debounce":50,"subdiscipline_title":"","show_multiples":false,"show_infolink":true,"show_dropdown":false,"show_context":true,"show_infolink_areas":false,"create_title_from_context":true,"create_title_from_context_style":"","custom_title":null,"show_context_oa_number":true,"context_most_relevant_tooltip":true,"show_context_timestamp":false,"show_list":true,"doi_outlink":true,"url_outlink":false,"show_keywords":true,"show_tags":false,"hide_keywords_overview":true,"show_area":true,"show_resulttype":false,"show_comments":false,"is_title_clickable":true,"abstract_small":250,"abstract_large":null,"list_set_backlink":false,"sort_options":["relevance","title","authors","year"],"filter_options":["all","open_access"],"filter_field":null,"sort_menu_dropdown":true,"initial_sort":null,"list_show_all_papers":false,"highlight_query_terms":true,"highlight_query_fields":["title","authors_string","paper_abstract","year","published_in","subject_orig"],"sort_field_exentsion":"_sort","filter_menu_dropdown":true,"list_sub_entries":false,"list_sub_entries_readers":false,"list_sub_entries_number":false,"list_sub_entries_statistics":false,"list_additional_images":false,"list_images":[],"list_images_path":"images/","visual_distributions":false,"list_show_external_vis":false,"external_vis_url":"","embed_modal":true,"share_modal":true,"hashtags_twitter_card":"okmaps,openscience,dataviz","faqs_button":true,"faqs_url":"https://openknowledgemaps.org/faq","streamgraph_zoom":false,"streamgraph_colors":["#28a2a3","#671A54","#CC3380","#7acca3","#c999ff","#ffe199","#ccfff2","#99DFFF","#FF99AA","#c5d5cf","#FFBD99","#2856A3"],"conference_id":0,"user_id":0,"max_recommendations":10,"max_documents":100,"service_names":{"plos":"PLOS","base":"BASE","pubmed":"PubMed","doaj":"DOAJ","openaire":"OpenAIRE","linkedcat":"LinkedCat+","linkedcat_authorview":"LinkedCat+","linkedcat_browseview":"LinkedCat+","triple":"TRIPLE"},"localization":{"eng":{"loading":"Loading...","search_placeholder":"Search within map...","show_list":"Show list","hide_list":"Hide list","intro_label":"","intro_icon":"","readers":"readers","year":"date","authors":"authors","title":"title","default_title":"Overview of <span id=\\"num_articles\\"></span> documents","overview_label":"Overview of","streamgraph_label":"Streamgraph for","overview_authors_label":"Overview of the works of","streamgraph_authors_label":"Streamgraph for the works of","custom_title_explanation":"This is a custom title. Please see the info button for more information. Original query:","articles_label":"documents","most_recent_label":"most recent","most_relevant_label":"most relevant","most_relevant_tooltip":"At the moment, we use the relevance ranking provided by the source API. Both PubMed and BASE mainly use text similarity between your query and the article metadata to determine the relevance. Please consult the FAQ for more information.","source_label":"Source","resulttype_label":"Document type","documenttypes_label":"Document types","documenttypes_tooltip":"The following document types were taken into consideration in the creation of this map (not all of them may appear in the map):","area":"Area","items":"items","backlink":"← Back to overview","backlink_list":"← Show all documents in area","backlink_list_streamgraph":"← Show all documents","backlink_list_streamgraph_stream_selected":"← Show all documents in stream","keywords":"Keywords","no_keywords":"n/a","no_title":"No title","default_area":"No area","default_author":"","default_id":"defaultid","default_hash":"hashHash","default_abstract":"No Abstract","default_published_in":"","default_readers":0,"default_url":"","default_x":1,"default_y":1,"default_year":"","sort_by_label":"sort by:","comment_by_label":"by","pdf_not_loaded":"Sorry, we were not able to retrieve the PDF for this publication. You can get it directly from","pdf_not_loaded_linktext":"this website","share_button_title":"share this map","embed_button_title":"Embed this knowledge map on other websites","embed_body_text":"You can use this code to embed the visualization on your own website or in a dashboard."},"ger":{"loading":"Wird geladen...","search_placeholder":"Suche in der Liste...","show_list":"Liste ausklappen","hide_list":"Liste einklappen","intro_label":"","intro_icon":"","readers":"Leser","year":"Jahr","authors":"Autor","title":"Titel","default_title":"Überblick über <span id=\\"num_articles\\"></span> Artikel","overview_label":"Überblick über","streamgraph_label":"Streamgraph für","overview_authors_label":"Überblick über die Werke von","streamgraph_authors_label":"Streamgraph für die Werke von","custom_title_explanation":"Dieser Titel wurde manuell geändert. Die Original-Suche lautet:","most_recent_label":"neueste","most_relevant_label":"relevanteste","articles_label":"Artikel","source_label":"Quelle","resulttype_label":"Dokumentart","documenttypes_label":"Publikationsarten","documenttypes_tooltip":"Die folgenden Publikationsarten wurden bei der Erstellung dieser Visualisierung in Betracht gezogen (nicht alle davon scheinen notwendigerweise in dieser Visualisierung auch auf):","area":"Bereich","items":"Dokumente","backlink":"← Zurück zum Überblick","backlink_list":"← Zeige alle Dokumente des Bereichs","backlink_list_streamgraph":"← Zeige alle Dokumente an","backlink_list_streamgraph_stream_selected":"← Zeige alle Dokumente des Streams an","keywords":"Schlagwörter","no_title":"Kein Titel","no_keywords":"nicht vorhanden","default_area":"Kein Bereich","default_author":"","default_id":"defaultid","default_hash":"hashHash","default_abstract":"","default_published_in":"","default_readers":0,"default_url":"","default_x":1,"default_y":1,"default_year":"","embed_title":"Visualisierung einbetten","sort_by_label":"sortieren: ","relevance":"Relevanz","link":"Link","comment_by_label":"von","share_button_title":"Visualisierung teilen","embed_button_title":"Visualisierung auf einer anderen Seite einbetten","embed_button_text":"Kopieren","embed_body_text":"Sie können diesen Code verwenden, um die Visualisierung auf anderen Seiten einzubetten.","pdf_not_loaded":"Leider konnten wir das PDF nicht abrufen. Mehr Informationen finden Sie auf","pdf_not_loaded_linktext":"dieser Seite"},"ger_linkedcat":{"loading":"Wird geladen...","search_placeholder":"Suche in der Liste...","show_list":"Liste ausklappen","hide_list":"Liste einklappen","intro_label":"","intro_icon":"","readers":"Leser","year":"Jahr","authors":"Autor","title":"Titel","default_title":"Knowledge Map für <span id=\\"num_articles\\"></span> Artikel","overview_label":"Knowledge Map für","streamgraph_label":"Streamgraph für","overview_authors_label":"Knowledge Map für die Werke von","streamgraph_authors_label":"Streamgraph für die Werke von","most_recent_label":"neueste","most_relevant_label":"relevanteste","articles_label":"open access Dokumente","source_label":"Quelle","resulttype_label":"Dokumentart","documenttypes_label":"Dokumentarten","documenttypes_tooltip":"Die folgenden Publikationsarten wurden bei der Erstellung dieser Visualisierung in Betracht gezogen (nicht alle davon scheinen notwendigerweise in dieser Visualisierung auch auf):","bio_link":"Biografie","area":"Bereich","area_streamgraph":"Schlagwort","items":"Dokumente","backlink":"← Zurück zum Überblick","backlink_list":"Zeige alle Dokumente des Bereichs","backlink_list_streamgraph":"Zeige alle Dokumente an","backlink_list_streamgraph_stream_selected":"Zeige alle Dokumente des Streams an","keywords":"Schlagwörter","basic_classification":"Basisklassifikation","ddc":"DDC","no_keywords":"nicht vorhanden","no_title":"Kein Titel","default_area":"Kein Bereich","default_author":"","default_id":"defaultid","default_hash":"hashHash","default_abstract":"","default_published_in":"","default_readers":0,"default_url":"","default_x":1,"default_y":1,"default_year":"","embed_title":"Visualisierung einbetten","sort_by_label":"sortieren: ","relevance":"Relevanz","link":"Link","comment_by_label":"von","share_button_title":"Visualisierung teilen","embed_button_title":"Visualisierung auf einer anderen Seite einbetten","embed_button_text":"Kopieren","embed_body_text":"Sie können diesen Code verwenden, um die Visualisierung auf anderen Seiten einzubetten.","pdf_load_text":"Dieser Vorgang kann mehrere Minuten dauern, da die gescannten Texte sehr umfangreich sein können. Bitte haben Sie etwas Geduld.","pdf_not_loaded":"Leider konnten wir das PDF nicht abrufen. Mehr Informationen finden Sie auf","pdf_not_loaded_linktext":"dieser Seite"},"eng_plos":{"loading":"Loading...","search_placeholder":"Search within map...","show_list":"Show list","hide_list":"Hide list","intro_label":"","intro_icon":"","readers":"views","year":"date","authors":"authors","title":"title","area":"Area","items":"items","backlink":"← Back to overview","backlink_list":"← Show all documents in area","keywords":"Keywords","no_keywords":"n/a","no_title":"No title","overview_label":"Overview of","custom_title_explanation":"This is a custom title. Please see the info button for more information. Original query:","articles_label":"documents","most_recent_label":"most recent","most_relevant_label":"most relevant","source_label":"Source","resulttype_label":"Article type","documenttypes_label":"Article types","documenttypes_tooltip":"The following article types were taken into consideration in the creation of this map (not all of them may appear in the map):","default_area":"No area","default_author":"","default_id":"defaultid","default_hash":"hashHash","default_abstract":"No Abstract","default_published_in":"","default_readers":0,"default_url":"","default_x":1,"default_y":1,"default_year":"","sort_by_label":"sort by:","comment_by_label":"by","pdf_not_loaded":"Sorry, we were not able to retrieve the PDF for this publication. You can get it directly from","pdf_not_loaded_linktext":"this website","share_button_title":"share this map","embed_button_title":"Embed this knowledge map on other websites","embed_body_text":"You can use this code to embed the visualization on your own website or in a dashboard."},"eng_pubmed":{"loading":"Loading...","search_placeholder":"Search within map...","show_list":"Show list","hide_list":"Hide list","intro_label":"","intro_icon":"","relevance":"relevance","readers":"citations","year":"year","authors":"authors","title":"title","area":"Area","backlink":"← Back to overview","backlink_list":"← Show all documents in area","backlink_list_streamgraph":"← Show all documents","backlink_list_streamgraph_stream_selected":"← Show all documents in stream","keywords":"Keywords","no_keywords":"n/a","no_title":"No title","overview_label":"Overview of","streamgraph_label":"Streamgraph for","overview_authors_label":"Overview of the works of","streamgraph_authors_label":"Streamgraph for the works of","custom_title_explanation":"This is a custom title. Please see the info button for more information. Original query:","articles_label":"documents","most_recent_label":"most recent","most_relevant_label":"most relevant","most_relevant_tooltip":"To determine the most relevant documents, we use the relevance ranking provided by the source - either BASE or PubMed. Both sources compute the text similarity between your query and the article metadata to establish the relevance ranking. Please consult the FAQ for more information.","source_label":"Source","resulttype_label":"Document type","documenttypes_label":"Document types","documenttypes_tooltip":"The following document types were taken into consideration in the creation of this map (not all of them may appear in the map):","default_area":"No area","default_author":"","default_id":"defaultid","default_hash":"hashHash","default_abstract":"No Abstract","default_published_in":"","default_readers":0,"default_url":"","default_x":1,"default_y":1,"default_year":"","sort_by_label":"sort by:","filter_by_label":"show: ","all":"any","open_access":"Open Access","link":"link","items":"items","comment_by_label":"by","pdf_not_loaded":"Sorry, we were not able to retrieve the PDF for this publication. You can get it directly from","pdf_not_loaded_linktext":"this website","share_button_title":"share this map","embed_button_title":"Embed this knowledge map on other websites","embed_button_text":"Copy","embed_title":"embed map","embed_body_text":"You can use this code to embed the visualization on your own website or in a dashboard.","high_metadata_quality":"High metadata quality","high_metadata_quality_desc_base":"This knowledge map only includes documents with an abstract (min. 300 characters). High metadata quality significantly improves the quality of your knowledge map.","high_metadata_quality_desc_pubmed":"This knowledge map only includes documents with an abstract. High metadata quality significantly improves the quality of your knowledge map.","low_metadata_quality":"Low metadata quality","low_metadata_quality_desc_base":"This knowledge map includes documents with and without an abstract. Low metadata quality may significantly reduce the quality of your knowledge map. ","low_metadata_quality_desc_pubmed":"This knowledge map includes documents with and without an abstract. Low metadata quality may significantly reduce the quality of your knowledge map. "},"eng_openaire":{"loading":"Loading...","search_placeholder":"Search within map...","show_list":"Show list","hide_list":"Hide list","intro_label":"more info","intro_icon":"","relevance":"relevance","readers":"readers","tweets":"tweets","year":"year","authors":"authors","citations":"citations","title":"title","area":"Area","backlink":"← Back to overview","backlink_list":"← Show all documents in area","keywords":"Keywords","no_keywords":"n/a","no_title":"No title","overview_label":"Overview of","articles_label":"documents","most_recent_label":"most recent","most_relevant_label":"most relevant","source_label":"Source","resulttype_label":"Document type","documenttypes_label":"Article types","documenttypes_tooltip":"The following document types were taken into consideration in the creation of this map (not all of them may appear in the map):","default_area":"No area","default_author":"","default_id":"defaultid","default_hash":"hashHash","default_abstract":"No Abstract","default_published_in":"","default_readers":0,"default_url":"","default_x":1,"default_y":1,"default_year":"","dataset_count_label":"datasets","paper_count_label":"papers","viper_edit_title":"How to add project resources","viper_edit_desc_label":"<p>Are you missing relevant publications and datasets related to this project? \\n <p>No problem: simply link further resources on the OpenAIRE website. \\n The resources will then be be automatically added to the map. \\n <p>Use the button indicated in the exemplary screenshot to do so: ","viper_button_desc_label":"<p>By clicking on the button below, you are redirected to the OpenAIRE page for","viper_edit_button_text":"continue to openaire","share_button_title":"share this map","embed_button_title":"Embed this knowledge map on other websites","embed_button_text":"Copy","embed_title":"embed map","embed_body_text":"You can use this code to embed the visualization on your own website or in a dashboard.","link":"link","tweets_count_label":" tweets","readers_count_label":" readers (Mendeley)","citations_count_label":" citations (Crossref)","filter_by_label":"show: ","all":"any","open_access":"Open Access","publication":"papers","dataset":"datasets","items":"items","sort_by_label":"sort by:","comment_by_label":"by","scale_by_label":"Scale map by:","scale_by_infolink_label":"notes on use of metrics","pdf_not_loaded":"Sorry, we were not able to retrieve the PDF for this publication. You can get it directly from","pdf_not_loaded_linktext":"this website","credit_alt":"VIPER was created by Open Knowledge Maps"},"ger_cris":{"loading":"Wird geladen...","search_placeholder":"Suchwort eingeben","show_list":"Liste ausklappen","hide_list":"Liste einklappen","intro_label":"mehr Informationen","intro_icon":"","intro_label_areas":"Verteilung der Respondenten","intro_areas_title":"Verteilung der Respondenten für ","readers":"Nennungen","year":"Jahr","authors":"Autor","title":"alphabetisch","default_title":"Überblick über <span id=\\"num_articles\\"></span> Artikel","overview_label":"Überblick über","most_recent_label":"neueste","most_relevant_label":"relevanteste","articles_label":"Artikel","source_label":"Quelle","documenttypes_label":"Publikationsarten","documenttypes_tooltip":"Die folgenden Publikationsarten wurden bei der Erstellung dieser Visualisierung in Betracht gezogen (nicht alle davon scheinen notwendigerweise in dieser Visualisierung auch auf):","area":"Themenfeld","backlink":"← Zurück zur Übersicht","backlink_list":"← Zeige alle Themen im Themenfeld","keywords":"Keywords","no_keywords":"nicht vorhanden","no_title":"Kein Titel","default_area":"Kein Bereich","default_author":"","default_id":"defaultid","default_hash":"hashHash","default_abstract":"","default_published_in":"","default_readers":0,"default_url":"","default_x":1,"default_y":1,"default_year":"","showmore_questions_label":"Alle","showmore_questions_verb":"Fragen anzeigen","distributions_label":"Verteilungen ","show_verb_label":"ausklappen","hide_verb_label":"einklappen","sort_by_label":"sortieren: ","items":"Themen","comment_by_label":"von","scale_by_infolink_label":"","scale_by_label":"Verteilung für:","credit_alt":"Created by Open Knowledge Maps"},"ger_cris_2":{"loading":"Wird geladen...","search_placeholder":"Suchwort eingeben","show_list":"Liste ausklappen","hide_list":"Liste einklappen","intro_label":"mehr Informationen","intro_icon":"","intro_label_areas":"Verteilung der Respondenten","intro_areas_title":"Verteilung der Respondenten für ","readers":"Anzahl Fragen","year":"Jahr","authors":"Autor","title":"alphabetisch","default_title":"Überblick über <span id=\\"num_articles\\"></span> Artikel","overview_label":"Überblick über","most_recent_label":"neueste","most_relevant_label":"relevanteste","articles_label":"Artikel","source_label":"Quelle","documenttypes_label":"Publikationsarten","documenttypes_tooltip":"Die folgenden Publikationsarten wurden bei der Erstellung dieser Visualisierung in Betracht gezogen (nicht alle davon scheinen notwendigerweise in dieser Visualisierung auch auf):","area":"Themenfeld","backlink":"← Zurück zur Übersicht","backlink_list":"← Zeige alle Themen im Themenfeld","keywords":"Keywords","no_keywords":"nicht vorhanden","no_title":"Kein Titel","default_area":"Kein Bereich","default_author":"","default_id":"defaultid","default_hash":"hashHash","default_abstract":"","default_published_in":"","default_readers":0,"default_url":"","default_x":1,"default_y":1,"default_year":"","showmore_questions_label":"Alle","showmore_questions_verb":"Fragen anzeigen","distributions_label":"Verteilungen ","show_verb_label":"ausklappen","hide_verb_label":"einklappen","sort_by_label":"sortieren: ","items":"Themen","comment_by_label":"von","scale_by_infolink_label":"","scale_by_label":"Verteilung für:","credit_alt":"Created by Open Knowledge Maps"},"eng_cris_2":{"loading":"Loading...","search_placeholder":"Search within map...","show_list":"Show list","hide_list":"Hide list","intro_label":"more information","intro_icon":"","intro_label_areas":"Distribution of respondents","intro_areas_title":"Distribution of respondents for ","readers":"no. questions","year":"date","authors":"authors","title":"alphabetically","default_title":"Overview of <span id=\\"num_articles\\"></span> documents","overview_label":"Overview of","most_recent_label":"most recent","most_relevant_label":"most relevant","articles_label":"documents","source_label":"Source","documenttypes_label":"Document types","documenttypes_tooltip":"The following document types were taken into consideration in the creation of this map (not all of them may appear in the map):","area":"Area","backlink":"← Back to overview","backlink_list":"← Show all topics in area","keywords":"Keywords","no_keywords":"n/a","no_title":"No title","default_area":"No area","default_author":"","default_id":"defaultid","default_hash":"hashHash","default_abstract":"No Abstract","default_published_in":"","default_readers":0,"default_url":"","default_x":1,"default_y":1,"default_year":"","sort_by_label":"sort by:","comment_by_label":"by","embed_body_text":"You can use this code to embed the visualization on your own website or in a dashboard.","showmore_questions_label":"Show all","showmore_questions_verb":"questions","distributions_label":"distributions ","show_verb_label":"expand","hide_verb_label":"collapse","items":"topics","scale_by_infolink_label":"","scale_by_label":"Distribution for:","credit_alt":"Created by Open Knowledge Maps"}},"scale_types":[],"rescale_map":true,"cris_legend":false,"url_plos_pdf":"http://www.plosone.org/article/fetchObject.action?representation=PDF&uri=info:doi/","plos_journals_to_shortcodes":{"plos neglected tropical diseases":"plosntds","plos one":"plosone","plos biology":"plosbiology","plos medicine":"plosmedicine","plos computational Biology":"ploscompbiol","plos genetics":"plosgenetics","plos pathogens":"plospathogens","plos clinical trials":"plosclinicaltrials"},"title":"","server_url":"//openknowledgemaps.org/search_api/server/","files":[{"title":"digital education","file":"530133cf1768e6606f63c641a1a96768"}],"options":[{"id":"time_range","multiple":false,"name":"Time Range","type":"dropdown","fields":[{"id":"any-time","text":"Any time"},{"id":"last-month","text":"Last month"},{"id":"last-year","text":"Last year"},{"id":"user-defined","text":"Custom range","class":"user-defined","inputs":[{"id":"from","label":"From: ","class":"time_input"},{"id":"to","label":"To: ","class":"time_input"}]}]},{"id":"sorting","multiple":false,"name":"Sorting","type":"dropdown","fields":[{"id":"most-relevant","text":"Most relevant"},{"id":"most-recent","text":"Most recent"}]},{"id":"document_types","multiple":true,"name":"Document types","type":"dropdown","width":"140px","fields":[{"id":"4","text":"Audio","selected":false},{"id":"11","text":"Book","selected":false},{"id":"111","text":"Book part","selected":false},{"id":"13","text":"Conference object","selected":false},{"id":"16","text":"Course material","selected":false},{"id":"7","text":"Dataset","selected":false},{"id":"121","text":"Journal/newspaper article","selected":true},{"id":"122","text":"Journal/newspaper other content","selected":false},{"id":"17","text":"Lecture","selected":false},{"id":"19","text":"Manuscript","selected":false},{"id":"3","text":"Map","selected":false},{"id":"2","text":"Musical notation","selected":false},{"id":"F","text":"Other/Unknown material","selected":false},{"id":"1A","text":"Patent","selected":false},{"id":"14","text":"Report","selected":false},{"id":"15","text":"Review","selected":false},{"id":"6","text":"Software","selected":false},{"id":"51","text":"Still image","selected":false},{"id":"1","text":"Text","selected":false},{"id":"181","text":"Thesis: bachelor","selected":false},{"id":"183","text":"Thesis: doctoral and postdoctoral","selected":false},{"id":"182","text":"Thesis: master","selected":false},{"id":"52","text":"Video/moving image","selected":false}]},{"id":"min_descsize","multiple":false,"name":"Abstract","type":"dropdown","width":"145px","fields":[{"id":"300","text":"High metadata quality (abstract required, minimum length: 300 characters)"},{"id":"0","text":"Low metadata quality (no abstract required, which may significantly reduce map quality)"}]}]}`; +const config = `{"render_list":true,"render_map":true,"scale_toolbar":false,"is_authorview":false,"content_based":true,"is_streamgraph":false,"visualization_type":"overview","tag":"visualization","min_height":600,"min_width":600,"max_height":1000,"multiples_size":600,"padding_articles":0,"circle_padding":0,"reference_size":650,"max_diameter_size":50,"min_diameter_size":30,"max_area_size":110,"min_area_size":50,"bubble_min_scale":1,"bubble_max_scale":1,"paper_min_scale":1,"paper_max_scale":1,"dynamic_sizing":false,"dogear_width":0.1,"dogear_height":0.1,"paper_width_factor":1.2,"paper_height_factor":1.6,"paper_readers_height_factor":0.2,"paper_metadata_height_correction":25,"is_force_areas":true,"area_force_alpha":0.02,"is_force_papers":true,"papers_force_alpha":0.1,"dynamic_force_area":false,"dynamic_force_papers":false,"preview_image_width_list":230,"preview_image_height_list":298,"preview_image_width":738,"preview_image_height":984,"zoom_factor":0.9,"transition_duration":750,"zoomout_transition":750,"mode":"search_repos","backend":"legacy","language":"eng_pubmed","hyphenation_language":"en","use_hypothesis":true,"service":"base","canonical_url":null,"intro":{"title":"What's this?","body":"<div style=\\"max-width: 1000px; width: 100%;\\"><div id=\\"whatsthis-page\\"> <p class=\\"wtp\\">This <b><span style=\\"color:#e55137\\">beta</span> version of Open Knowledge Maps</b> presents you with a topical overview of research on <b>digital education</b> based on 100 papers taken from <b>BASE</b>. <a class=\\"underline\\" href=\\"http://base-search.net\\" target=\\"_blank \\">BASE</a> provides access to over 100 million documents from more than 5,200 content sources in all disciplines. </p> <p class=\\"wtp\\">We use text similarity to create a knowledge map. The algorithm groups those papers together that have many words in common. Knowledge maps provide an instant overview of a topic by showing the main areas at a glance, and papers related to each area. This makes it possible to easily identify useful, pertinent information. Please <a target=\\"_blank\\" class=\\"underline\\" href=\\"faq\\">check out our FAQs</a> for more information.</p> <p><a target=\\"_blank\\" class=\\"underline\\" href=\\"http://eepurl.com/dvQeGP\\">Sign-up for our newsletter</a> to receive occasional updates on our latest improvements.</p> <p><b>We need your feedback!</b><br><a target=\\"_blank\\" class=\\"underline\\" href=\\"about\\">Open Knowledge Maps</a> is a non-profit organisation run by a group of dedicated volunteers. In order to improve our free service, we need your support. Please send us your feedback to <a style=\\"text-decoration: underline;\\" href=\\"mailto:info@openknowledgemaps.org\\">info@openknowledgemaps.org</a></p> </div></div>"},"show_intro":false,"show_loading_screen":false,"is_evaluation":true,"evaluation_service":["ga","matomo"],"enable_mouseover_evaluation":false,"is_adaptive":false,"credit_embed":false,"use_area_uri":true,"url_prefix":"https://www.base-search.net/Record/","url_prefix_datasets":null,"input_format":"csv","base_unit":"citations","preview_type":"pdf","convert_author_names":true,"debug":false,"debounce":50,"subdiscipline_title":"","show_multiples":false,"show_infolink":true,"show_dropdown":false,"show_context":true,"show_infolink_areas":false,"create_title_from_context":true,"create_title_from_context_style":"","custom_title":null,"show_context_oa_number":true,"context_most_relevant_tooltip":true,"show_context_timestamp":false,"show_list":true,"doi_outlink":true,"url_outlink":false,"show_keywords":true,"show_tags":false,"hide_keywords_overview":true,"show_area":true,"show_resulttype":false,"show_comments":false,"is_title_clickable":true,"abstract_small":250,"abstract_large":null,"list_set_backlink":false,"sort_options":["relevance","title","authors","year"],"filter_options":["all","open_access"],"filter_field":null,"sort_menu_dropdown":true,"initial_sort":null,"list_show_all_papers":false,"highlight_query_terms":true,"highlight_query_fields":["title","authors_string","paper_abstract","year","published_in","subject_orig"],"sort_field_exentsion":"_sort","filter_menu_dropdown":true,"list_sub_entries":false,"list_sub_entries_readers":false,"list_sub_entries_number":false,"list_sub_entries_statistics":false,"list_additional_images":false,"list_images":[],"list_images_path":"images/","visual_distributions":false,"list_show_external_vis":false,"external_vis_url":"","embed_modal":true,"share_modal":true,"hashtags_twitter_card":"okmaps,openscience,dataviz","faqs_button":true,"faqs_url":"https://openknowledgemaps.org/faq","streamgraph_zoom":false,"streamgraph_colors":["#28a2a3","#671A54","#CC3380","#7acca3","#c999ff","#ffe199","#ccfff2","#99DFFF","#FF99AA","#c5d5cf","#FFBD99","#2856A3"],"conference_id":0,"user_id":0,"max_recommendations":10,"max_documents":100,"service_names":{"plos":"PLOS","base":"BASE","pubmed":"PubMed","doaj":"DOAJ","openaire":"OpenAIRE","linkedcat":"LinkedCat+","linkedcat_authorview":"LinkedCat+","linkedcat_browseview":"LinkedCat+","triple":"TRIPLE"},"localization":{"eng":{"loading":"Loading...","search_placeholder":"Search within map...","show_list":"Show list","hide_list":"Hide list","intro_label":"","intro_icon":"","readers":"readers","year":"date","authors":"authors","title":"title","default_title":"Overview of <span id=\\"num_articles\\"></span> documents","overview_label":"Overview of","streamgraph_label":"Streamgraph for","overview_authors_label":"Overview of the works of","streamgraph_authors_label":"Streamgraph for the works of","custom_title_explanation":"This is a custom title. Please see the info button for more information. Original query:","articles_label":"documents","most_recent_label":"most recent","most_relevant_label":"most relevant","most_relevant_tooltip":"At the moment, we use the relevance ranking provided by the source API. Both PubMed and BASE mainly use text similarity between your query and the article metadata to determine the relevance. Please consult the FAQ for more information.","source_label":"Source","resulttype_label":"Document type","documenttypes_label":"Document types","documenttypes_tooltip":"The following document types were taken into consideration in the creation of this map (not all of them may appear in the map):","area":"Area","items":"items","backlink":"← Back to overview","backlink_list":"← Show all documents in area","backlink_list_streamgraph":"← Show all documents","backlink_list_streamgraph_stream_selected":"← Show all documents in stream","keywords":"Keywords","no_keywords":"n/a","no_title":"No title","default_area":"No area","default_author":"","default_id":"defaultid","default_hash":"hashHash","default_abstract":"No Abstract","default_published_in":"","default_readers":0,"default_url":"","default_x":1,"default_y":1,"default_year":"","sort_by_label":"sort by:","comment_by_label":"by","pdf_not_loaded":"Sorry, we were not able to retrieve the PDF for this publication. You can get it directly from","pdf_not_loaded_linktext":"this website","share_button_title":"share this map","embed_button_title":"Embed this knowledge map on other websites","embed_body_text":"You can use this code to embed the visualization on your own website or in a dashboard."},"ger":{"loading":"Wird geladen...","search_placeholder":"Suche in der Liste...","show_list":"Liste ausklappen","hide_list":"Liste einklappen","intro_label":"","intro_icon":"","readers":"Leser","year":"Jahr","authors":"Autor","title":"Titel","default_title":"Überblick über <span id=\\"num_articles\\"></span> Artikel","overview_label":"Überblick über","streamgraph_label":"Streamgraph für","overview_authors_label":"Überblick über die Werke von","streamgraph_authors_label":"Streamgraph für die Werke von","custom_title_explanation":"Dieser Titel wurde manuell geändert. Die Original-Suche lautet:","most_recent_label":"neueste","most_relevant_label":"relevanteste","articles_label":"Artikel","source_label":"Quelle","resulttype_label":"Dokumentart","documenttypes_label":"Publikationsarten","documenttypes_tooltip":"Die folgenden Publikationsarten wurden bei der Erstellung dieser Visualisierung in Betracht gezogen (nicht alle davon scheinen notwendigerweise in dieser Visualisierung auch auf):","area":"Bereich","items":"Dokumente","backlink":"← Zurück zum Überblick","backlink_list":"← Zeige alle Dokumente des Bereichs","backlink_list_streamgraph":"← Zeige alle Dokumente an","backlink_list_streamgraph_stream_selected":"← Zeige alle Dokumente des Streams an","keywords":"Schlagwörter","no_title":"Kein Titel","no_keywords":"nicht vorhanden","default_area":"Kein Bereich","default_author":"","default_id":"defaultid","default_hash":"hashHash","default_abstract":"","default_published_in":"","default_readers":0,"default_url":"","default_x":1,"default_y":1,"default_year":"","embed_title":"Visualisierung einbetten","sort_by_label":"sortieren: ","relevance":"Relevanz","link":"Link","comment_by_label":"von","share_button_title":"Visualisierung teilen","embed_button_title":"Visualisierung auf einer anderen Seite einbetten","embed_button_text":"Kopieren","embed_body_text":"Sie können diesen Code verwenden, um die Visualisierung auf anderen Seiten einzubetten.","pdf_not_loaded":"Leider konnten wir das PDF nicht abrufen. Mehr Informationen finden Sie auf","pdf_not_loaded_linktext":"dieser Seite"},"ger_linkedcat":{"loading":"Wird geladen...","search_placeholder":"Suche in der Liste...","show_list":"Liste ausklappen","hide_list":"Liste einklappen","intro_label":"","intro_icon":"","readers":"Leser","year":"Jahr","authors":"Autor","title":"Titel","default_title":"Knowledge Map für <span id=\\"num_articles\\"></span> Artikel","overview_label":"Knowledge Map für","streamgraph_label":"Streamgraph für","overview_authors_label":"Knowledge Map für die Werke von","streamgraph_authors_label":"Streamgraph für die Werke von","most_recent_label":"neueste","most_relevant_label":"relevanteste","articles_label":"open access Dokumente","source_label":"Quelle","resulttype_label":"Dokumentart","documenttypes_label":"Dokumentarten","documenttypes_tooltip":"Die folgenden Publikationsarten wurden bei der Erstellung dieser Visualisierung in Betracht gezogen (nicht alle davon scheinen notwendigerweise in dieser Visualisierung auch auf):","bio_link":"Biografie","area":"Bereich","area_streamgraph":"Schlagwort","items":"Dokumente","backlink":"← Zurück zum Überblick","backlink_list":"Zeige alle Dokumente des Bereichs","backlink_list_streamgraph":"Zeige alle Dokumente an","backlink_list_streamgraph_stream_selected":"Zeige alle Dokumente des Streams an","keywords":"Schlagwörter","basic_classification":"Basisklassifikation","ddc":"DDC","no_keywords":"nicht vorhanden","no_title":"Kein Titel","default_area":"Kein Bereich","default_author":"","default_id":"defaultid","default_hash":"hashHash","default_abstract":"","default_published_in":"","default_readers":0,"default_url":"","default_x":1,"default_y":1,"default_year":"","embed_title":"Visualisierung einbetten","sort_by_label":"sortieren: ","relevance":"Relevanz","link":"Link","comment_by_label":"von","share_button_title":"Visualisierung teilen","embed_button_title":"Visualisierung auf einer anderen Seite einbetten","embed_button_text":"Kopieren","embed_body_text":"Sie können diesen Code verwenden, um die Visualisierung auf anderen Seiten einzubetten.","pdf_load_text":"Dieser Vorgang kann mehrere Minuten dauern, da die gescannten Texte sehr umfangreich sein können. Bitte haben Sie etwas Geduld.","pdf_not_loaded":"Leider konnten wir das PDF nicht abrufen. Mehr Informationen finden Sie auf","pdf_not_loaded_linktext":"dieser Seite"},"eng_plos":{"loading":"Loading...","search_placeholder":"Search within map...","show_list":"Show list","hide_list":"Hide list","intro_label":"","intro_icon":"","readers":"views","year":"date","authors":"authors","title":"title","area":"Area","items":"items","backlink":"← Back to overview","backlink_list":"← Show all documents in area","keywords":"Keywords","no_keywords":"n/a","no_title":"No title","overview_label":"Overview of","custom_title_explanation":"This is a custom title. Please see the info button for more information. Original query:","articles_label":"documents","most_recent_label":"most recent","most_relevant_label":"most relevant","source_label":"Source","resulttype_label":"Article type","documenttypes_label":"Article types","documenttypes_tooltip":"The following article types were taken into consideration in the creation of this map (not all of them may appear in the map):","default_area":"No area","default_author":"","default_id":"defaultid","default_hash":"hashHash","default_abstract":"No Abstract","default_published_in":"","default_readers":0,"default_url":"","default_x":1,"default_y":1,"default_year":"","sort_by_label":"sort by:","comment_by_label":"by","pdf_not_loaded":"Sorry, we were not able to retrieve the PDF for this publication. You can get it directly from","pdf_not_loaded_linktext":"this website","share_button_title":"share this map","embed_button_title":"Embed this knowledge map on other websites","embed_body_text":"You can use this code to embed the visualization on your own website or in a dashboard."},"eng_pubmed":{"loading":"Loading...","search_placeholder":"Search within map...","show_list":"Show list","hide_list":"Hide list","intro_label":"","intro_icon":"","relevance":"relevance","readers":"citations","year":"year","authors":"authors","title":"title","area":"Area","backlink":"← Back to overview","backlink_list":"← Show all documents in area","backlink_list_streamgraph":"← Show all documents","backlink_list_streamgraph_stream_selected":"← Show all documents in stream","keywords":"Keywords","no_keywords":"n/a","no_title":"No title","overview_label":"Overview of","streamgraph_label":"Streamgraph for","overview_authors_label":"Overview of the works of","streamgraph_authors_label":"Streamgraph for the works of","custom_title_explanation":"This is a custom title. Please see the info button for more information. Original query:","articles_label":"documents","most_recent_label":"most recent","most_relevant_label":"most relevant","most_relevant_tooltip":"To determine the most relevant documents, we use the relevance ranking provided by the source - either BASE or PubMed. Both sources compute the text similarity between your query and the article metadata to establish the relevance ranking. Please consult the FAQ for more information.","source_label":"Source","resulttype_label":"Document type","documenttypes_label":"Document types","documenttypes_tooltip":"The following document types were taken into consideration in the creation of this map (not all of them may appear in the map):","default_area":"No area","default_author":"","default_id":"defaultid","default_hash":"hashHash","default_abstract":"No Abstract","default_published_in":"","default_readers":0,"default_url":"","default_x":1,"default_y":1,"default_year":"","sort_by_label":"sort by:","filter_by_label":"show: ","all":"any","open_access":"Open Access","link":"link","items":"items","comment_by_label":"by","pdf_not_loaded":"Sorry, we were not able to retrieve the PDF for this publication. You can get it directly from","pdf_not_loaded_linktext":"this website","share_button_title":"share this map","embed_button_title":"Embed this knowledge map on other websites","embed_button_text":"Copy","embed_title":"embed map","embed_body_text":"You can use this code to embed the visualization on your own website or in a dashboard.","high_metadata_quality":"High metadata quality","high_metadata_quality_desc_base":"This knowledge map only includes documents with an abstract (min. 300 characters). High metadata quality significantly improves the quality of your knowledge map.","high_metadata_quality_desc_pubmed":"This knowledge map only includes documents with an abstract. High metadata quality significantly improves the quality of your knowledge map.","low_metadata_quality":"Low metadata quality","low_metadata_quality_desc_base":"This knowledge map includes documents with and without an abstract. Low metadata quality may significantly reduce the quality of your knowledge map. ","low_metadata_quality_desc_pubmed":"This knowledge map includes documents with and without an abstract. Low metadata quality may significantly reduce the quality of your knowledge map. "},"eng_openaire":{"loading":"Loading...","search_placeholder":"Search within map...","show_list":"Show list","hide_list":"Hide list","intro_label":"more info","intro_icon":"","relevance":"relevance","readers":"readers","tweets":"tweets","year":"year","authors":"authors","citations":"citations","title":"title","area":"Area","backlink":"← Back to overview","backlink_list":"← Show all documents in area","keywords":"Keywords","no_keywords":"n/a","no_title":"No title","overview_label":"Overview of","articles_label":"documents","most_recent_label":"most recent","most_relevant_label":"most relevant","source_label":"Source","resulttype_label":"Document type","documenttypes_label":"Article types","documenttypes_tooltip":"The following document types were taken into consideration in the creation of this map (not all of them may appear in the map):","default_area":"No area","default_author":"","default_id":"defaultid","default_hash":"hashHash","default_abstract":"No Abstract","default_published_in":"","default_readers":0,"default_url":"","default_x":1,"default_y":1,"default_year":"","dataset_count_label":"datasets","paper_count_label":"papers","viper_edit_title":"How to add project resources","viper_edit_desc_label":"<p>Are you missing relevant publications and datasets related to this project? \\n <p>No problem: simply link further resources on the OpenAIRE website. \\n The resources will then be be automatically added to the map. \\n <p>Use the button indicated in the exemplary screenshot to do so: ","viper_button_desc_label":"<p>By clicking on the button below, you are redirected to the OpenAIRE page for","viper_edit_button_text":"continue to openaire","share_button_title":"share this map","embed_button_title":"Embed this knowledge map on other websites","embed_button_text":"Copy","embed_title":"embed map","embed_body_text":"You can use this code to embed the visualization on your own website or in a dashboard.","link":"link","tweets_count_label":" tweets","readers_count_label":" readers (Mendeley)","citations_count_label":" citations (Crossref)","filter_by_label":"show: ","all":"any","open_access":"Open Access","publication":"papers","dataset":"datasets","items":"items","sort_by_label":"sort by:","comment_by_label":"by","scale_by_label":"Scale map by:","scale_by_infolink_label":"notes on use of metrics","pdf_not_loaded":"Sorry, we were not able to retrieve the PDF for this publication. You can get it directly from","pdf_not_loaded_linktext":"this website","credit_alt":"VIPER was created by Open Knowledge Maps"},"ger_cris":{"loading":"Wird geladen...","search_placeholder":"Suchwort eingeben","show_list":"Liste ausklappen","hide_list":"Liste einklappen","intro_label":"mehr Informationen","intro_icon":"","intro_label_areas":"Verteilung der Respondenten","intro_areas_title":"Verteilung der Respondenten für ","readers":"Nennungen","year":"Jahr","authors":"Autor","title":"alphabetisch","default_title":"Überblick über <span id=\\"num_articles\\"></span> Artikel","overview_label":"Überblick über","most_recent_label":"neueste","most_relevant_label":"relevanteste","articles_label":"Artikel","source_label":"Quelle","documenttypes_label":"Publikationsarten","documenttypes_tooltip":"Die folgenden Publikationsarten wurden bei der Erstellung dieser Visualisierung in Betracht gezogen (nicht alle davon scheinen notwendigerweise in dieser Visualisierung auch auf):","area":"Themenfeld","backlink":"← Zurück zur Übersicht","backlink_list":"← Zeige alle Themen im Themenfeld","keywords":"Keywords","no_keywords":"nicht vorhanden","no_title":"Kein Titel","default_area":"Kein Bereich","default_author":"","default_id":"defaultid","default_hash":"hashHash","default_abstract":"","default_published_in":"","default_readers":0,"default_url":"","default_x":1,"default_y":1,"default_year":"","showmore_questions_label":"Alle","showmore_questions_verb":"Fragen anzeigen","distributions_label":"Verteilungen ","show_verb_label":"ausklappen","hide_verb_label":"einklappen","sort_by_label":"sortieren: ","items":"Themen","comment_by_label":"von","scale_by_infolink_label":"","scale_by_label":"Verteilung für:","credit_alt":"Created by Open Knowledge Maps"},"ger_cris_2":{"loading":"Wird geladen...","search_placeholder":"Suchwort eingeben","show_list":"Liste ausklappen","hide_list":"Liste einklappen","intro_label":"mehr Informationen","intro_icon":"","intro_label_areas":"Verteilung der Respondenten","intro_areas_title":"Verteilung der Respondenten für ","readers":"Anzahl Fragen","year":"Jahr","authors":"Autor","title":"alphabetisch","default_title":"Überblick über <span id=\\"num_articles\\"></span> Artikel","overview_label":"Überblick über","most_recent_label":"neueste","most_relevant_label":"relevanteste","articles_label":"Artikel","source_label":"Quelle","documenttypes_label":"Publikationsarten","documenttypes_tooltip":"Die folgenden Publikationsarten wurden bei der Erstellung dieser Visualisierung in Betracht gezogen (nicht alle davon scheinen notwendigerweise in dieser Visualisierung auch auf):","area":"Themenfeld","backlink":"← Zurück zur Übersicht","backlink_list":"← Zeige alle Themen im Themenfeld","keywords":"Keywords","no_keywords":"nicht vorhanden","no_title":"Kein Titel","default_area":"Kein Bereich","default_author":"","default_id":"defaultid","default_hash":"hashHash","default_abstract":"","default_published_in":"","default_readers":0,"default_url":"","default_x":1,"default_y":1,"default_year":"","showmore_questions_label":"Alle","showmore_questions_verb":"Fragen anzeigen","distributions_label":"Verteilungen ","show_verb_label":"ausklappen","hide_verb_label":"einklappen","sort_by_label":"sortieren: ","items":"Themen","comment_by_label":"von","scale_by_infolink_label":"","scale_by_label":"Verteilung für:","credit_alt":"Created by Open Knowledge Maps"},"eng_cris_2":{"loading":"Loading...","search_placeholder":"Search within map...","show_list":"Show list","hide_list":"Hide list","intro_label":"more information","intro_icon":"","intro_label_areas":"Distribution of respondents","intro_areas_title":"Distribution of respondents for ","readers":"no. questions","year":"date","authors":"authors","title":"alphabetically","default_title":"Overview of <span id=\\"num_articles\\"></span> documents","overview_label":"Overview of","most_recent_label":"most recent","most_relevant_label":"most relevant","articles_label":"documents","source_label":"Source","documenttypes_label":"Document types","documenttypes_tooltip":"The following document types were taken into consideration in the creation of this map (not all of them may appear in the map):","area":"Area","backlink":"← Back to overview","backlink_list":"← Show all topics in area","keywords":"Keywords","no_keywords":"n/a","no_title":"No title","default_area":"No area","default_author":"","default_id":"defaultid","default_hash":"hashHash","default_abstract":"No Abstract","default_published_in":"","default_readers":0,"default_url":"","default_x":1,"default_y":1,"default_year":"","sort_by_label":"sort by:","comment_by_label":"by","embed_body_text":"You can use this code to embed the visualization on your own website or in a dashboard.","showmore_questions_label":"Show all","showmore_questions_verb":"questions","distributions_label":"distributions ","show_verb_label":"expand","hide_verb_label":"collapse","items":"topics","scale_by_infolink_label":"","scale_by_label":"Distribution for:","credit_alt":"Created by Open Knowledge Maps"}},"scale_types":[],"rescale_map":true,"cris_legend":false,"url_plos_pdf":"http://www.plosone.org/article/fetchObject.action?representation=PDF&uri=info:doi/","plos_journals_to_shortcodes":{"plos neglected tropical diseases":"plosntds","plos one":"plosone","plos biology":"plosbiology","plos medicine":"plosmedicine","plos computational Biology":"ploscompbiol","plos genetics":"plosgenetics","plos pathogens":"plospathogens","plos clinical trials":"plosclinicaltrials"},"title":"","server_url":"//openknowledgemaps.org/search_api/server/","files":[{"title":"digital education","file":"530133cf1768e6606f63c641a1a96768"}],"options":[{"id":"time_range","multiple":false,"name":"Time Range","type":"dropdown","fields":[{"id":"any-time","text":"Any time"},{"id":"last-month","text":"Last month"},{"id":"last-year","text":"Last year"},{"id":"user-defined","text":"Custom range","class":"user-defined","inputs":[{"id":"from","label":"From: ","class":"time_input"},{"id":"to","label":"To: ","class":"time_input"}]}]},{"id":"sorting","multiple":false,"name":"Sorting","type":"dropdown","fields":[{"id":"most-relevant","text":"Most relevant"},{"id":"most-recent","text":"Most recent"}]},{"id":"document_types","multiple":true,"name":"Document types","type":"dropdown","width":"140px","fields":[{"id":"4","text":"Audio","selected":false},{"id":"11","text":"Book","selected":false},{"id":"111","text":"Book part","selected":false},{"id":"13","text":"Conference object","selected":false},{"id":"16","text":"Course material","selected":false},{"id":"7","text":"Dataset","selected":false},{"id":"121","text":"Journal/newspaper article","selected":true},{"id":"122","text":"Journal/newspaper other content","selected":false},{"id":"17","text":"Lecture","selected":false},{"id":"19","text":"Manuscript","selected":false},{"id":"3","text":"Map","selected":false},{"id":"2","text":"Musical notation","selected":false},{"id":"F","text":"Other/Unknown material","selected":false},{"id":"1A","text":"Patent","selected":false},{"id":"14","text":"Report","selected":false},{"id":"15","text":"Review","selected":false},{"id":"6","text":"Software","selected":false},{"id":"51","text":"Still image","selected":false},{"id":"1","text":"Text","selected":false},{"id":"181","text":"Thesis: bachelor","selected":false},{"id":"183","text":"Thesis: doctoral and postdoctoral","selected":false},{"id":"182","text":"Thesis: master","selected":false},{"id":"52","text":"Video/moving image","selected":false}]},{"id":"min_descsize","multiple":false,"name":"Abstract","type":"dropdown","width":"145px","fields":[{"id":"300","text":"High metadata quality (abstract required, minimum length: 300 characters)"},{"id":"0","text":"Low metadata quality (no abstract required, which may significantly reduce map quality)"}]}]}`; export const baseConfig = JSON.parse(config); From 3eb2689df2835d732deed63a4694dcdcf722f61b Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Thu, 6 Nov 2025 14:22:16 +0100 Subject: [PATCH 118/149] refactor: height of the geomap visualization container --- vis/js/templates/Geomap/HeightContainer/index.tsx | 10 ++++++++++ .../templates/Geomap/HeightContainer/selectors.ts | 3 +++ vis/js/templates/Geomap/index.tsx | 13 ++++++++----- vis/stylesheets/modules/_geomap.scss | 2 +- 4 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 vis/js/templates/Geomap/HeightContainer/index.tsx create mode 100644 vis/js/templates/Geomap/HeightContainer/selectors.ts diff --git a/vis/js/templates/Geomap/HeightContainer/index.tsx b/vis/js/templates/Geomap/HeightContainer/index.tsx new file mode 100644 index 000000000..6abe66faf --- /dev/null +++ b/vis/js/templates/Geomap/HeightContainer/index.tsx @@ -0,0 +1,10 @@ +import { FC, PropsWithChildren } from "react"; +import { useSelector } from "react-redux"; + +import { getMapHeight } from "./selectors"; + +export const HeightContainer: FC<PropsWithChildren> = ({ children }) => { + const height = useSelector(getMapHeight); + + return <div style={{ height }}>{children}</div>; +}; diff --git a/vis/js/templates/Geomap/HeightContainer/selectors.ts b/vis/js/templates/Geomap/HeightContainer/selectors.ts new file mode 100644 index 000000000..a780ff155 --- /dev/null +++ b/vis/js/templates/Geomap/HeightContainer/selectors.ts @@ -0,0 +1,3 @@ +import { State } from "@/js/types"; + +export const getMapHeight = (state: State) => state.chart.height; diff --git a/vis/js/templates/Geomap/index.tsx b/vis/js/templates/Geomap/index.tsx index 517a1c978..99c880807 100644 --- a/vis/js/templates/Geomap/index.tsx +++ b/vis/js/templates/Geomap/index.tsx @@ -4,15 +4,18 @@ import { FC } from "react"; import { MapContainer, ZoomControl } from "react-leaflet"; import { CONFIG } from "./config"; +import { HeightContainer } from "./HeightContainer"; import { LayersSwitcher } from "./LayersSwitcher"; import { Pins } from "./Pins"; const { MAP, ZOOM_CONTROL } = CONFIG; export const Geomap: FC = () => ( - <MapContainer {...MAP} className="geomap_container"> - <ZoomControl {...ZOOM_CONTROL} /> - <LayersSwitcher /> - <Pins /> - </MapContainer> + <HeightContainer> + <MapContainer {...MAP} className="geomap_container"> + <ZoomControl {...ZOOM_CONTROL} /> + <LayersSwitcher /> + <Pins /> + </MapContainer> + </HeightContainer> ); diff --git a/vis/stylesheets/modules/_geomap.scss b/vis/stylesheets/modules/_geomap.scss index 3bf1f169c..2eb4aa1c2 100644 --- a/vis/stylesheets/modules/_geomap.scss +++ b/vis/stylesheets/modules/_geomap.scss @@ -1,7 +1,7 @@ /* ########### Geomap ########### */ .geomap_container { - height: 100vh; + height: 100%; width: 100%; z-index: 0; } From e7b24733e9ec91c463f4c0255d1fbbc6204da750 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Thu, 6 Nov 2025 14:47:18 +0100 Subject: [PATCH 119/149] refactor: remove backling for geomap visualizations --- vis/hooks/index.ts | 3 +++ vis/hooks/useVisualizationType.ts | 24 ++++++++++++++++++++++++ vis/js/templates/listentry/Title.tsx | 26 ++++++++++---------------- 3 files changed, 37 insertions(+), 16 deletions(-) create mode 100644 vis/hooks/index.ts create mode 100644 vis/hooks/useVisualizationType.ts diff --git a/vis/hooks/index.ts b/vis/hooks/index.ts new file mode 100644 index 000000000..3451ead0c --- /dev/null +++ b/vis/hooks/index.ts @@ -0,0 +1,3 @@ +export { useActiveDataItem } from "./useActiveDataItem"; +export { useData } from "./useData"; +export { useVisualizationType } from "./useVisualizationType"; diff --git a/vis/hooks/useVisualizationType.ts b/vis/hooks/useVisualizationType.ts new file mode 100644 index 000000000..d9ab32faa --- /dev/null +++ b/vis/hooks/useVisualizationType.ts @@ -0,0 +1,24 @@ +/** + * The hook allows to access a visualization type and useful boolean flags. + */ + +import { useSelector } from "react-redux"; + +import { + GEOMAP_MODE, + KNOWLEDGEMAP_MODE, + STREAMGRAPH_MODE, +} from "@/js/reducers/chartType"; +import { State } from "@/js/types"; + +const gerVisualizationType = (state: State) => state.chartType; + +export const useVisualizationType = () => { + const visualizationType = useSelector(gerVisualizationType); + + const isGeoMap = visualizationType === GEOMAP_MODE; + const isStreamgraph = visualizationType === STREAMGRAPH_MODE; + const isKnowledgeMap = visualizationType === KNOWLEDGEMAP_MODE; + + return { visualizationType, isGeoMap, isKnowledgeMap, isStreamgraph }; +}; diff --git a/vis/js/templates/listentry/Title.tsx b/vis/js/templates/listentry/Title.tsx index c47a04cea..79e991e2a 100644 --- a/vis/js/templates/listentry/Title.tsx +++ b/vis/js/templates/listentry/Title.tsx @@ -1,10 +1,11 @@ import { FC } from "react"; import { connect } from "react-redux"; +import { useVisualizationType } from "@/hooks"; + import Highlight from "../../components/Highlight"; import { useLocalizationContext } from "../../components/LocalizationProvider"; -import { GEOMAP_MODE, STREAMGRAPH_MODE } from "../../reducers/chartType"; -import { AllPossiblePapersType, State, VisualizationTypes } from "../../types"; +import { AllPossiblePapersType, State } from "../../types"; import { getDateFromTimestamp } from "../../utils/dates"; import { mapDispatchToListEntriesProps } from "../../utils/eventhandlers"; import useMatomo from "../../utils/useMatomo"; @@ -14,8 +15,6 @@ const MAX_TITLE_LENGTH = 164; interface TitleProps { disableClicks: boolean; isSelected: boolean; - isStreamgraph: boolean; - visualizationType: VisualizationTypes; paper: AllPossiblePapersType; handleSelectPaper: (paper: AllPossiblePapersType) => void; handleSelectPaperWithZoom: (paper: AllPossiblePapersType) => void; @@ -24,8 +23,6 @@ interface TitleProps { const Title: FC<TitleProps> = ({ paper, - isStreamgraph, - visualizationType, disableClicks, isSelected, handleSelectPaper, @@ -34,19 +31,21 @@ const Title: FC<TitleProps> = ({ }) => { const loc = useLocalizationContext(); const { trackEvent } = useMatomo(); - const isGeoMap = visualizationType === GEOMAP_MODE; + const { isGeoMap, isKnowledgeMap, isStreamgraph } = useVisualizationType(); const handleClick = () => { if (disableClicks) { return; } - if (!isStreamgraph) { - handleSelectPaperWithZoom(paper); - } else { + if (isGeoMap || isStreamgraph) { handleSelectPaper(paper); } + if (isKnowledgeMap) { + handleSelectPaperWithZoom(paper); + } + trackEvent("List document", "Select paper", "List title"); }; @@ -75,10 +74,7 @@ const Title: FC<TitleProps> = ({ onMouseEnter={mouseEnterHandler} onMouseLeave={mouseLeaveHandler} > - <a - id="paper_list_title" - title={rawTitle + (paper.year ? formattedDate : "")} - > + <a id="paper_list_title" title={rawTitle + (paper.year ? formattedDate : "")}> <Highlight queryHighlight>{formattedTitle}</Highlight> {!!paper.year && <Highlight queryHighlight>{formattedDate}</Highlight>} </a> @@ -87,8 +83,6 @@ const Title: FC<TitleProps> = ({ }; const mapStateToProps = (state: State) => ({ - isStreamgraph: state.chartType === STREAMGRAPH_MODE, - visualizationType: state.chartType, disableClicks: state.list.disableClicks, isSelected: !!state.selectedPaper, }); From 828dc1773822c3c9842a4e7f760717c8428cf7df Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Thu, 6 Nov 2025 14:52:48 +0100 Subject: [PATCH 120/149] feat: back link for the list entries with geomap vis type --- .../templates/listentry/StandardListEntry.tsx | 30 ++++++++----------- vis/js/utils/eventhandlers.ts | 2 +- 2 files changed, 14 insertions(+), 18 deletions(-) diff --git a/vis/js/templates/listentry/StandardListEntry.tsx b/vis/js/templates/listentry/StandardListEntry.tsx index e29d88e93..1ffa65fa0 100644 --- a/vis/js/templates/listentry/StandardListEntry.tsx +++ b/vis/js/templates/listentry/StandardListEntry.tsx @@ -30,7 +30,7 @@ interface StandardListEntryProps { showDocumentType: boolean; showMetrics?: unknown; showAllDocTypes: boolean; - showBacklink: boolean; + showBackLink: boolean; showDocTags: boolean; showKeywords: boolean; showLocation: boolean; @@ -39,9 +39,9 @@ interface StandardListEntryProps { service: ServiceType; paper: AllPossiblePapersType; isContentBased: boolean; - isInStreamBacklink: boolean; + isInStreamBackLink: boolean; baseUnit: SortValuesType; - handleBacklinkClick: () => void; + handleBackLinkClick: () => void; } const getLocationFromPaper = (paper: AllPossiblePapersType): string | null => { @@ -62,19 +62,13 @@ const StandardListEntry: FC<StandardListEntryProps> = ({ showMetrics, isContentBased, baseUnit, - showBacklink, - isInStreamBacklink, + showBackLink, + isInStreamBackLink, showDocTags, showAllDocTypes, service, - handleBacklinkClick, + handleBackLinkClick, }) => { - const backlink = { - show: showBacklink, - isInStream: isInStreamBacklink, - onClick: () => handleBacklinkClick(), - }; - const citations = paper.citation_count; const showCitations = !isContentBased && @@ -133,10 +127,10 @@ const StandardListEntry: FC<StandardListEntryProps> = ({ {showCitations && <Citations number={citations} label={baseUnit} />} <PaperButtons paper={paper} /> {showArea && <Area paper={paper} isShort={showCitations} />} - {!!backlink.show && ( + {showBackLink && ( <EntryBacklink - onClick={backlink.onClick} - isInStream={backlink.isInStream} + onClick={handleBackLinkClick} + isInStream={isInStreamBackLink} /> )} </div> @@ -153,8 +147,10 @@ const mapStateToProps = (state: State) => ({ showKeywords: state.list.showKeywords && (!!state.selectedPaper || !state.list.hideUnselectedKeywords), - showBacklink: state.chartType === STREAMGRAPH_MODE && !!state.selectedPaper, - isInStreamBacklink: !!state.selectedBubble, + showBackLink: + (state.chartType === STREAMGRAPH_MODE || state.chartType === GEOMAP_MODE) && + !!state.selectedPaper, + isInStreamBackLink: !!state.selectedBubble, showDocTags: state.service === "base" || state.service === "orcid", showAllDocTypes: (state.service === "base" || diff --git a/vis/js/utils/eventhandlers.ts b/vis/js/utils/eventhandlers.ts index a2f4a9042..77afeaea8 100644 --- a/vis/js/utils/eventhandlers.ts +++ b/vis/js/utils/eventhandlers.ts @@ -44,7 +44,7 @@ export const mapDispatchToListEntriesProps = (dispatch: any) => ({ ), ), handleDeselectPaper: () => dispatch(deselectPaper()), - handleBacklinkClick: () => dispatch(deselectPaper()), + handleBackLinkClick: () => dispatch(deselectPaper()), handleCiteClick: (paper: AllPossiblePapersType) => dispatch(showCitePaper(paper)), handleExportClick: (paper: AllPossiblePapersType) => From 6de29393d8f1d1cd512af050f60ffe6585029fcd Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Thu, 6 Nov 2025 16:09:14 +0100 Subject: [PATCH 121/149] feat: back link in geomap visualization --- vis/js/i18n/localization.ts | 6 +- vis/js/templates/listentry/EntryBacklink.tsx | 33 +- .../templates/listentry/StandardListEntry.tsx | 4 +- vis/stylesheets/modules/list/_entry.scss | 1357 +++++++++-------- 4 files changed, 719 insertions(+), 681 deletions(-) diff --git a/vis/js/i18n/localization.ts b/vis/js/i18n/localization.ts index 38b60994b..6b3e59123 100644 --- a/vis/js/i18n/localization.ts +++ b/vis/js/i18n/localization.ts @@ -375,9 +375,9 @@ export const localization: { authors: "authors", title: "title", backlink: "← Back to overview", - backlink_list: "Show all documents in area", - backlink_list_streamgraph: "Show all documents", - backlink_list_streamgraph_stream_selected: "Show all documents in stream", + backlink_list: "← Show all documents", + backlink_list_streamgraph: "← Show all documents", + backlink_list_streamgraph_stream_selected: "← Show all documents in stream", unknown: "Unknown", streamgraph_label: "Streamgraph of", overview_authors_label: "Overview of the works of", diff --git a/vis/js/templates/listentry/EntryBacklink.tsx b/vis/js/templates/listentry/EntryBacklink.tsx index 6bc46b924..9e2c2dda7 100644 --- a/vis/js/templates/listentry/EntryBacklink.tsx +++ b/vis/js/templates/listentry/EntryBacklink.tsx @@ -1,28 +1,31 @@ -import React, { FC } from "react"; +import { FC } from "react"; + +import { useVisualizationType } from "@/hooks"; + import { useLocalizationContext } from "../../components/LocalizationProvider"; -interface EntryBacklinkProps { +interface EntryBackLinkProps { isInStream: boolean; onClick: () => void; } -const EntryBacklink: FC<EntryBacklinkProps> = ({ isInStream, onClick }) => { +const EntryBackLink: FC<EntryBackLinkProps> = ({ isInStream, onClick }) => { const localization = useLocalizationContext(); + const { isStreamgraph } = useVisualizationType(); + + let displayedText = localization.backlink_list; + + if (isStreamgraph) { + displayedText = isInStream + ? localization.backlink_list_streamgraph_stream_selected + : localization.backlink_list_streamgraph; + } return ( - <button - className="paper_button backlink_list" - style={{ width: "auto" }} - onClick={onClick} - > - <i className="fas fa-arrow-left"></i> - <span className="backlink-label"> - {isInStream - ? localization.backlink_list_streamgraph_stream_selected - : localization.backlink_list_streamgraph} - </span> + <button type="button" className="back_link_button" onClick={onClick}> + {displayedText} </button> ); }; -export default EntryBacklink; +export default EntryBackLink; diff --git a/vis/js/templates/listentry/StandardListEntry.tsx b/vis/js/templates/listentry/StandardListEntry.tsx index 1ffa65fa0..762fa60cd 100644 --- a/vis/js/templates/listentry/StandardListEntry.tsx +++ b/vis/js/templates/listentry/StandardListEntry.tsx @@ -17,7 +17,7 @@ import Comments from "./Comments"; import Details from "./Details"; import DocTypesRow from "./DocTypesRow"; import DocumentType from "./DocumentType"; -import EntryBacklink from "./EntryBacklink"; +import EntryBackLink from "./EntryBackLink"; import Keywords from "./Keywords"; import Link from "./Link"; import { Location } from "./Location"; @@ -128,7 +128,7 @@ const StandardListEntry: FC<StandardListEntryProps> = ({ <PaperButtons paper={paper} /> {showArea && <Area paper={paper} isShort={showCitations} />} {showBackLink && ( - <EntryBacklink + <EntryBackLink onClick={handleBackLinkClick} isInStream={isInStreamBackLink} /> diff --git a/vis/stylesheets/modules/list/_entry.scss b/vis/stylesheets/modules/list/_entry.scss index c151d0703..6010bbe16 100644 --- a/vis/stylesheets/modules/list/_entry.scss +++ b/vis/stylesheets/modules/list/_entry.scss @@ -1,932 +1,967 @@ .highlighted { - background: yellow; + background: yellow; } .list_entry { - border-bottom: 2px solid $okm-clouds; - padding: 0px 0px 20px 15px; - border-left: 0px solid $okm-clouds; + border-bottom: 2px solid $okm-clouds; + padding: 0px 0px 20px 15px; + border-left: 0px solid $okm-clouds; - .list_visual_dstributions { - margin-top:10px; - cursor: default; - } + .list_visual_dstributions { + margin-top: 10px; + cursor: default; + } } .list_entry_full { - border-bottom: 0px; - padding-left: 15px; + border-bottom: 0px; + padding-left: 15px; } #oa { - margin-bottom: 6px; + margin-bottom: 6px; } .lowercase { - text-transform: lowercase; + text-transform: lowercase; } .tags { - display: inline-block; + display: inline-block; } .paper-tag { - display: inline-block; - padding: 2px 20px; - min-width: 90px; - background-color: #F4F4F6; + display: inline-block; + padding: 2px 20px; + min-width: 90px; + background-color: #f4f4f6; - color: $tag-color; - text-align: center; - font-size: 10px; - font-weight: $fontweight400; + color: $tag-color; + text-align: center; + font-size: 10px; + font-weight: $fontweight400; - border-radius: 27px; - -webkit-border-radius: 27px; - -moz-border-radius: 27px; + border-radius: 27px; + -webkit-border-radius: 27px; + -moz-border-radius: 27px; - margin-right: 3px; - margin-bottom: 5px; + margin-right: 3px; + margin-bottom: 5px; - box-shadow: 0 0px 1px 0 rgba(0, 0, 0, 0.14), 0 0px 1px -2px rgba(0, 0, 0, 0.12), 0 1px 1px 0 rgba(0, 0, 0, 0.1); + box-shadow: + 0 0px 1px 0 rgba(0, 0, 0, 0.14), + 0 0px 1px -2px rgba(0, 0, 0, 0.12), + 0 1px 1px 0 rgba(0, 0, 0, 0.1); - text-transform: lowercase; + text-transform: lowercase; } .open-access-tag { - color: white; - background-color: $open-access; + color: white; + background-color: $open-access; } .free-access-tag { - color: $open-access; - border: 1px solid $open-access; - background-color: white; + color: $open-access; + border: 1px solid $open-access; + background-color: white; } .dataset-tag { - color: $tag-color; - border-color: $tag-color; + color: $tag-color; + border-color: $tag-color; } .resulttype-dataset { - border: $dataset; + border: $dataset; } .list_metadata { - padding-top: 20px; - margin-bottom: 10px; - font-family: $link-font-family; + padding-top: 20px; + margin-bottom: 10px; + font-family: $link-font-family; - .list_title { - font-size: 15px; - line-height: 150%; - margin-bottom: 10px; - padding-right: 10px; - display: inline-block; - color: $list_metadata_title_paper; - font-weight: $fontweight600; - - a { - text-decoration: none; - color: $list_metadata_title_paper; - cursor: pointer; - - &:hover { - text-decoration: underline; - } - } - } - - #outlink_list { - vertical-align:top; - width: 12px; - height: 12px; - padding-left:0px; - margin-top:0px; - } - - .list_links { - float: right; - vertical-align: top; - display: inline-block; - text-align: center; - padding-top: 5px; - padding-right: 10px; - - @if $skin == 'triple' { - display: none; - } - - .outlink_symbol { - vertical-align: baseline; - } - } + .list_title { + font-size: 15px; + line-height: 150%; + margin-bottom: 10px; + padding-right: 10px; + display: inline-block; + color: $list_metadata_title_paper; + font-weight: $fontweight600; - .list_links a.oa-link { - color: white; - border: 1px solid $open-access; - background-color: $open-access; - &:hover { - background-color: white; - color: $open-access; - } - } + a { + text-decoration: none; + color: $list_metadata_title_paper; + cursor: pointer; - .list_links a { - background-color: white; - text-decoration: none; - cursor: pointer; - padding: 5px; - border-radius: 5px; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - color: $list_show_hide_button; - border: 1px solid $list_show_hide_button; - &:hover { - background-color: $medium-blue; - color: white; - } + &:hover { + text-decoration: underline; + } } + } - .doi_outlink { - margin-top: 5px; - height: 18px; - font-weight: $fontweight400; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - } + #outlink_list { + vertical-align: top; + width: 12px; + height: 12px; + padding-left: 0px; + margin-top: 0px; + } - .doi_outlink_link { - color: $link-gray; - text-decoration: none; - border-bottom: 1px solid $link-gray; + .list_links { + float: right; + vertical-align: top; + display: inline-block; + text-align: center; + padding-top: 5px; + padding-right: 10px; - &:hover { - border-bottom: 2px solid $link-gray; - } + @if $skin == "triple" { + display: none; } .outlink_symbol { - font-family: FontAwesome; - //vertical-align: middle; - font-size: 9px; + vertical-align: baseline; } + } - .list_details, .doi_outlink, .conceptgraph { - font-family: $link-font-family; - font-size: 12px; - line-height: 120%; - color: $list_detail; - padding: 0; - padding-right: 10px; - - .list_authors { - color: $list_detail_authors; - font-weight: $fontweight400; - } - - .list_source { - padding-top: 3px; - - &.short { - text-overflow: ellipsis; - height: min-content; - overflow: hidden; - white-space: nowrap; - } - - .list_in { - color: $list_detail_in; - } - - .list_published_in { - color: $black; - font-style: italic; - line-height: 150%; - } - } + .list_links a.oa-link { + color: white; + border: 1px solid $open-access; + background-color: $open-access; + &:hover { + background-color: white; + color: $open-access; } + } - .doi_outlink { - padding-right: 0; - max-width: 98%; + .list_links a { + background-color: white; + text-decoration: none; + cursor: pointer; + padding: 5px; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + color: $list_show_hide_button; + border: 1px solid $list_show_hide_button; + &:hover { + background-color: $medium-blue; + color: white; } -} + } -#list_abstract { - padding-right: 10px; - font-size: 13px; - font-family: $abstract-font-family; - line-height: 130%; - padding-left: 0px; - color: $list_abstract; + .doi_outlink { + margin-top: 5px; + height: 18px; font-weight: $fontweight400; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + } - &.short { - overflow: hidden; - text-overflow: ellipsis; - display: -webkit-box; - -webkit-line-clamp: 3; - line-clamp: 3; - -webkit-box-orient: vertical; - } + .doi_outlink_link { + color: $link-gray; + text-decoration: none; + border-bottom: 1px solid $link-gray; - em { - font-weight: $fontweight400; - font-style: normal; - background-color: $highlight-searchterm; - border-radius: 4px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - padding: 2px; + &:hover { + border-bottom: 2px solid $link-gray; } -} + } -s.resulttype { - font-size: 12px; - margin-bottom: 10px; -} + .outlink_symbol { + font-family: FontAwesome; + //vertical-align: middle; + font-size: 9px; + } -.list_row { + .list_details, + .doi_outlink, + .conceptgraph { font-family: $link-font-family; font-size: 12px; line-height: 120%; - margin-bottom: 5px; + color: $list_detail; padding: 0; - text-align: left; - display: block; padding-right: 10px; - .list_row_label { - font-weight: $fontweight700; + .list_authors { + color: $list_detail_authors; + font-weight: $fontweight400; } - .list_row_content { - font-weight: normal; - color: #333; + .list_source { + padding-top: 3px; + + &.short { + text-overflow: ellipsis; + height: min-content; + overflow: hidden; + white-space: nowrap; + } + + .list_in { + color: $list_detail_in; + } + + .list_published_in { + color: $black; + font-style: italic; + line-height: 150%; + } } + } + + .doi_outlink { + padding-right: 0; + max-width: 98%; + } } -.list_area { +#list_abstract { + padding-right: 10px; + font-size: 13px; + font-family: $abstract-font-family; + line-height: 130%; + padding-left: 0px; + color: $list_abstract; + font-weight: $fontweight400; + + &.short { + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 3; + line-clamp: 3; + -webkit-box-orient: vertical; + } - text-decoration: none; + em { font-weight: $fontweight400; - line-height: 120%; - height: 18px; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - max-width: 95%; - padding-right: 0; + font-style: normal; + background-color: $highlight-searchterm; + border-radius: 4px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + padding: 2px; + } +} - &.short { - max-width: 82%; - } +s.resulttype { + font-size: 12px; + margin-bottom: 10px; +} + +.list_row { + font-family: $link-font-family; + font-size: 12px; + line-height: 120%; + margin-bottom: 5px; + padding: 0; + text-align: left; + display: block; + padding-right: 10px; + + .list_row_label { + font-weight: $fontweight700; + } + + .list_row_content { + font-weight: normal; + color: #333; + } +} + +.list_area { + text-decoration: none; + font-weight: $fontweight400; + line-height: 120%; + height: 18px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + max-width: 95%; + padding-right: 0; + + &.short { + max-width: 82%; + } - .area_name { - color: $link-gray; - cursor: pointer; - border-bottom: 1px solid $link-gray; + .area_name { + color: $link-gray; + cursor: pointer; + border-bottom: 1px solid $link-gray; - &:hover { - text-decoration: none; - border-bottom: 2px solid $link-gray; - } + &:hover { + text-decoration: none; + border-bottom: 2px solid $link-gray; } + } } .resulttype_tag { - font-weight: $fontweight800; + font-weight: $fontweight800; } .resulttype { - font-size: 12px; - line-height: 120%; - margin-bottom: 10px; - margin-top: 5px; + font-size: 12px; + line-height: 120%; + margin-bottom: 10px; + margin-top: 5px; } .conceptgraph { - margin-top: 5px; - margin-bottom: 10px; - height: 20px; - font-weight: $fontweight400; - white-space: nowrap; - text-overflow: ellipsis; - font-size: 12px; - - a { - color: #f29e00; - text-decoration: none; - border-bottom: 1px solid #f29e00; + margin-top: 5px; + margin-bottom: 10px; + height: 20px; + font-weight: $fontweight400; + white-space: nowrap; + text-overflow: ellipsis; + font-size: 12px; + + a { + color: #f29e00; + text-decoration: none; + border-bottom: 1px solid #f29e00; - &:hover { - border-bottom: 3px solid #f29e00; - } + &:hover { + border-bottom: 3px solid #f29e00; } + } } .concept-graph-description { - font-size: 12px; + font-size: 12px; } .thumbnail-concept-graph { - max-width: 100%; + max-width: 100%; } .preview_image { - max-width: 82%; - padding: 3%; - background-color: #eff3f4; + max-width: 82%; + padding: 3%; + background-color: #eff3f4; } -.preview_text, .preview_thumbnail { - display: inline-block; - vertical-align: top; +.preview_text, +.preview_thumbnail { + display: inline-block; + vertical-align: top; } .preview_text { - max-width: 100%; - display: block; + max-width: 100%; + display: block; } .preview_thumbnail { - max-width: 100%; - display: block; - margin-right: 0px; + max-width: 100%; + display: block; + margin-right: 0px; } .tryout-button { - border: 2px solid #f29e00; - color: white; - background-color: #f29e00; - padding:5px; - border-radius: 5px; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - font-weight: 300; - display: block; - text-align: center; -} - -.tryout-button:hover, .tryout-button:active, .tryout-button:focus { - color: #f29e00; - background-color: transparent; - text-decoration: none; + border: 2px solid #f29e00; + color: white; + background-color: #f29e00; + padding: 5px; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + font-weight: 300; + display: block; + text-align: center; +} + +.tryout-button:hover, +.tryout-button:active, +.tryout-button:focus { + color: #f29e00; + background-color: transparent; + text-decoration: none; } .concept-graph-link { - margin-top: 10px; + margin-top: 10px; } .concept-graph-h { - font-weight: 600; - font-size: 14px; - color: $okm-blue; - margin-top: 10px; + font-weight: 600; + font-size: 14px; + color: $okm-blue; + margin-top: 10px; } -.list_subentry_showmore, .list_subentry_show_statistics { - display: none; - text-decoration: none; - cursor: pointer; +.list_subentry_showmore, +.list_subentry_show_statistics { + display: none; + text-decoration: none; + cursor: pointer; } .list_subentry_show_statistics_arrow_up { - display: none; + display: none; } .list_subentry_statistics { - display: none; + display: none; } .list_row { - margin-bottom: 10px; + margin-bottom: 10px; } .oa-link-hidden { - display: none; + display: none; } .nodisplay { - display: none !important; + display: none !important; } .bold-list { - font-weight:$fontweight700; + font-weight: $fontweight700; } .lowercase { - text-transform: lowercase; + text-transform: lowercase; } #papers_list .list_metrics { - font-size: 11px; - font-family: $base-font-family; - margin-bottom:5px; - color: $black; + font-size: 11px; + font-family: $base-font-family; + margin-bottom: 5px; + color: $black; } -.list_metrics_citations, .list_metrics_tweets, .list_metrics_item { - margin-right:10px; +.list_metrics_citations, +.list_metrics_tweets, +.list_metrics_item { + margin-right: 10px; } #curr-scale-explaination { - font-size: 12px; + font-size: 12px; } .list_readers { - font-size: 11px; - line-height: 120%; - margin-top: 0px; - margin-bottom: 10px; - padding: 0; - color: $black; - font-weight: $fontweight700; - padding-right: 10px; - - .list_readers_entity { - font-family: $link-font-family; - font-weight: $fontweight300; - } + font-size: 11px; + line-height: 120%; + margin-top: 0px; + margin-bottom: 10px; + padding: 0; + color: $black; + font-weight: $fontweight700; + padding-right: 10px; + + .list_readers_entity { + font-family: $link-font-family; + font-weight: $fontweight300; + } } // Preview image part div { - &#preview_image { - display: block; - margin-top: 20px; - margin-bottom: 20px; - margin-left: 15px; - } + &#preview_image { + display: block; + margin-top: 20px; + margin-bottom: 20px; + margin-left: 15px; + } - &#transbox { - display: none; - cursor: pointer; - opacity: .9; - background-color: rgba(255, 255, 255, 0.6); - } + &#transbox { + display: none; + cursor: pointer; + opacity: 0.9; + background-color: rgba(255, 255, 255, 0.6); + } - &#preview_image:hover > #transbox { - display: block; - } + &#preview_image:hover > #transbox { + display: block; + } - &#preview_page_index { - font-size: 12px; - height: 20px; - margin-top: 15px; - padding: 5px; - text-align: center; - background-color: #eee; - text-shadow: 0 1px 1px white; - - &:first-child { - margin-top:0px; - } + &#preview_page_index { + font-size: 12px; + height: 20px; + margin-top: 15px; + padding: 5px; + text-align: center; + background-color: #eee; + text-shadow: 0 1px 1px white; + + &:first-child { + margin-top: 0px; } + } } img#preview_page { - display: block; - margin-right: auto; - margin-left: auto; - text-align: center; - border: 1px solid; + display: block; + margin-right: auto; + margin-left: auto; + text-align: center; + border: 1px solid; } .list_subentry_showmore_arrow_down { - color: $okm-modal-btn; + color: $okm-modal-btn; } -.list_subentry_show_link{ - color: $okm-modal-btn; - border-bottom: 1px solid $okm-modal-btn; - font-family: $link-font-family; - font-size: 12px; +.list_subentry_show_link { + color: $okm-modal-btn; + border-bottom: 1px solid $okm-modal-btn; + font-family: $link-font-family; + font-size: 12px; - &:hover, &:focus, &:active { - border-bottom: 3px solid $okm-modal-btn; - } + &:hover, + &:focus, + &:active { + border-bottom: 3px solid $okm-modal-btn; + } } .list_subentry_showmore { - margin:10px 0px; - text-decoration: none; + margin: 10px 0px; + text-decoration: none; } .list_subentry_statistic_distribution_id { - font-weight: $fontweight700; + font-weight: $fontweight700; } .list_subentry_0_count { - display: none; - text-decoration: none; + display: none; + text-decoration: none; } .list_subentry_0_count_visible { - display: inline-block; + display: inline-block; } .explanation_0_count { - font-family: "FontAwesome"; - color: $dark-blue; + font-family: "FontAwesome"; + color: $dark-blue; } .popover-content { - color: $black; - font-size: 12px; - font-family: $base-font-family; + color: $black; + font-size: 12px; + font-family: $base-font-family; } .backlink_list { - width: auto; - padding-left: 10px; - padding-right: 14px; - font-size: 11px; + width: auto; + padding-left: 10px; + padding-right: 14px; + font-size: 11px; - .backlink-label { - margin-left: 6px; - } + .backlink-label { + margin-left: 6px; + } } #author_bio_link { - color: $medium-blue; + color: $medium-blue; } -#author_bio_link:active, #author_bio_link:focus { - text-decoration: none; +#author_bio_link:active, +#author_bio_link:focus { + text-decoration: none; } .comment-author { - font-style: italic; + font-style: italic; } .empty-area-warning { - padding: 10px; - color: red; - font-size: 12px; + padding: 10px; + color: red; + font-size: 12px; } @media screen and (max-width: 1150px) { + .list_metadata .list_title { + font-size: 13px; + } - .list_metadata .list_title { - font-size: 13px; - } - - #list_abstract { - font-size: 12px; - line-height: 120%; - } + #list_abstract { + font-size: 12px; + line-height: 120%; + } } @media screen and (max-width: 1150px) { - .list_readers { - margin-top: 0px; - float: none; - display: block; - padding-right: 0px; - } -} - -@if $skin == 'viper' { - .list_metadata { - .list_title { - font-size: 14px; - } - - .list_details, .doi_outlink { - .list_authors { - font-weight:$fontweight400; - } - } - } + .list_readers { + margin-top: 0px; + float: none; + display: block; + padding-right: 0px; + } } -@if $skin == 'cris_vis' { - .list_images { - padding-left: 15px; - padding-bottom: 15px; - text-align: right; - - h4 { - margin-top: 30px; - text-align: left !important; - font-size: 16px; - line-height:120%; - margin-bottom: 10px; - max-width: 100%; - display: block; - color: $list_metadata_title_paper; - font-weight: $fontweight600; - } - - .legend { - visibility: visible; - padding: 5px 10px 0px 0px; - width: 100%; - } - - .color-box { - width: 10px; - height: 10px; - } - } - - .list_subentry_statistics { - margin: 0; - background-color: $okm-clouds; - padding: 20px; - font-size: 12px !important; - } - - .list_subentry { - margin: 10px 0px; - } - .list_subentry_statistic_title { - margin-top: 10px; - text-transform: uppercase; +@if $skin == "viper" { + .list_metadata { + .list_title { + font-size: 14px; } - .list_subentry_show_statistics { - margin:5px 0px 10px; - - .list_subentry_show_statistics_link { - color: $okm-modal-btn; - border-bottom: 1px solid $okm-modal-btn; - font-family: $link-font-family; - font-size: 12px; - text-decoration: none; - - &:hover, &:focus, &:active { - border-bottom: 3px solid $okm-modal-btn; - } - } + .list_details, + .doi_outlink { + .list_authors { + font-weight: $fontweight400; + } } + } +} - #list_abstract { - font-size: 14px; - font-family: $abstract-font-family; - max-width: 100%; - padding-right: 10px; +@if $skin == "cris_vis" { + .list_images { + padding-left: 15px; + padding-bottom: 15px; + text-align: right; + + h4 { + margin-top: 30px; + text-align: left !important; + font-size: 16px; + line-height: 120%; + margin-bottom: 10px; + max-width: 100%; + display: block; + color: $list_metadata_title_paper; + font-weight: $fontweight600; + } + + .legend { + visibility: visible; + padding: 5px 10px 0px 0px; + width: 100%; + } + + .color-box { + width: 10px; + height: 10px; + } + } + + .list_subentry_statistics { + margin: 0; + background-color: $okm-clouds; + padding: 20px; + font-size: 12px !important; + } + + .list_subentry { + margin: 10px 0px; + } + .list_subentry_statistic_title { + margin-top: 10px; + text-transform: uppercase; + } + + .list_subentry_show_statistics { + margin: 5px 0px 10px; + + .list_subentry_show_statistics_link { + color: $okm-modal-btn; + border-bottom: 1px solid $okm-modal-btn; + font-family: $link-font-family; + font-size: 12px; + text-decoration: none; + + &:hover, + &:focus, + &:active { + border-bottom: 3px solid $okm-modal-btn; + } } + } - .list_metadata { + #list_abstract { + font-size: 14px; + font-family: $abstract-font-family; + max-width: 100%; + padding-right: 10px; + } - .list_title { - font-size: 16px; - margin-bottom: 0px; - max-width: 100%; - } + .list_metadata { + .list_title { + font-size: 16px; + margin-bottom: 0px; + max-width: 100%; } + } - .statistics-image { - background-color: #F4F4F6; - padding: 5px; - border-radius: 3px; - -moz-border-radius: 3px; - -webkit-border-radius:3px; - } + .statistics-image { + background-color: #f4f4f6; + padding: 5px; + border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + } - .list_image { - max-width: 100%; - } + .list_image { + max-width: 100%; + } - .list_image_title { - text-transform: uppercase; - text-align: left !important; - } + .list_image_title { + text-transform: uppercase; + text-align: left !important; + } - .list_readers { - font-size: 11px; - line-height: 120%; - margin-bottom: 5px; - padding-right: 5px; - - .list_readers_entity { - font-size: 11px; - font-family: $link-font-family; - font-weight: $fontweight400; - } - } + .list_readers { + font-size: 11px; + line-height: 120%; + margin-bottom: 5px; + padding-right: 5px; - .list_entry { - padding: 0px 0px 0px 15px; - } + .list_readers_entity { + font-size: 11px; + font-family: $link-font-family; + font-weight: $fontweight400; + } + } + + .list_entry { + padding: 0px 0px 0px 15px; + } + + .level2 .list_subentry { + margin-left: 15px; + border-left: 1px solid $list_show_hide_button; + padding-left: 5px; + } + + .level3 .list_subentry { + margin-left: 30px; + border-style: double; + border-color: $list_show_hide_button; + border-bottom: 0px; + border-top: 0px; + border-right: 0px; + padding-left: 5px; + } + + .level4 .list_subentry { + margin-left: 45px; + border-style: double; + border-color: $list_show_hide_button; + border-bottom: 0px; + border-top: 0px; + border-right: 0px; + padding-left: 5px; + } + + .level1 .list_subentry_metadata { + font-size: 14px !important; + } + + .level2 .list_subentry_metadata, + .level3 .list_subentry_metadata, + .level4 .list_subentry_metadata { + font-size: 14px !important; + color: #666666; + } + + .list_subentry_readers_count { + font-weight: $fontweight700; + } +} - .level2 .list_subentry { - margin-left: 15px; - border-left: 1px solid $list_show_hide_button; - padding-left: 5px; - } +@if $skin == "linkedcat" { + .list_metadata .list_links a { + color: $medium-blue; + border: 1px solid $medium-blue; + } - .level3 .list_subentry { - margin-left: 30px; - border-style: double; - border-color: $list_show_hide_button; - border-bottom: 0px; - border-top: 0px; - border-right: 0px; - padding-left: 5px; - } + .list_row, + #list_basic_classification, + #list_ddc { + display: block; + margin-bottom: 10px; + } - .level4 .list_subentry { - margin-left: 45px; - border-style: double; - border-color: $list_show_hide_button; - border-bottom: 0px; - border-top: 0px; - border-right: 0px; - padding-left: 5px; - } + .doi_outlink { + min-height: 20px; + } - .level1 .list_subentry_metadata { - font-size: 14px !important; + .list_metadata { + .list_title { + font-weight: normal; + font-size: 16px; } - .level2 .list_subentry_metadata, .level3 .list_subentry_metadata, .level4 .list_subentry_metadata { - font-size: 14px !important; - color: #666666; + .list_details, + .doi_outlink { + font-size: 14px; } - .list_subentry_readers_count { - font-weight: $fontweight700; + .list_links a.oa-link { + border-radius: 17px; + -moz-border-radius: 17px; + -webkit-border-radius: 17px; + padding: 5px 7px; } -} - -@if $skin == "linkedcat" { + } - .list_metadata .list_links a { - color: $medium-blue; - border: 1px solid $medium-blue; - } + #list_abstract { + span:not(:empty).highlighted { + display: block; + margin-top: 5px; - .list_row, #list_basic_classification, #list_ddc { - display: block; - margin-bottom: 10px; + &::before, + &::after { + content: "[...] "; + } } + } - .doi_outlink { - min-height: 20px; - } + .list_row, + #list_basic_classification, + #list_ddc, + #list_abstract { + font-size: 14px; + } + @media screen and (max-width: 1000px) { .list_metadata { - - .list_title { - font-weight: normal; - font-size: 16px; - } - - .list_details, .doi_outlink { - font-size: 14px; - } - - .list_links a.oa-link { - border-radius: 17px; - -moz-border-radius: 17px; - -webkit-border-radius: 17px; - padding: 5px 7px; - } + .list_title, + .list_details, + .doi_outlink { + font-size: 12px; + } } + #list_basic_classification, + .list_row, #list_abstract { - span:not(:empty).highlighted { - display: block; - margin-top: 5px; - - &::before, &::after { - content: "[...] " - } - } - } - - .list_row, #list_basic_classification, #list_ddc, #list_abstract { - font-size: 14px; - } - - @media screen and (max-width: 1000px) { - - .list_metadata { - .list_title, .list_details, .doi_outlink { - font-size: 12px; - } - } - - #list_basic_classification, .list_row, #list_abstract { - font-size: 12px; - max-width:100%; - } + font-size: 12px; + max-width: 100%; } - + } } @if $skin == "covis" { + .open-access-tag { + font-size: 10px; + vertical-align: top; + font-weight: $fontweight400; - .open-access-tag { - font-size: 10px; - vertical-align: top; - font-weight: $fontweight400; - - .highlighted { - color: $open-access; - } + .highlighted { + color: $open-access; } + } - .list_metadata { - margin-bottom: 0px; + .list_metadata { + margin-bottom: 0px; - .list_title { - font-size: 16px; - line-height:120%; - margin-bottom: 5px; - } + .list_title { + font-size: 16px; + line-height: 120%; + margin-bottom: 5px; } + } - .list_metrics { - display: none; - } + .list_metrics { + display: none; + } - .list_area { - display: block; - margin-top: 5px; - } + .list_area { + display: block; + margin-top: 5px; + } - #list_abstract { - font-size: 14px; - } + #list_abstract { + font-size: 14px; + } - .comments .comment-text { - font-size: 12px; - max-width: 95%; - background-color: #f1f1f1; - padding: 5px; - border-radius: 5px; - -moz-border-radius: 5px; - -webkit-border-radius:5px; - display: inline-block; - vertical-align: middle; - - &.no-bg { - background-color: transparent; - } - - &.no-pd-left { - padding-left: 0; - } - - &.no-pd-right { - padding-right: 0; - } + .comments .comment-text { + font-size: 12px; + max-width: 95%; + background-color: #f1f1f1; + padding: 5px; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + display: inline-block; + vertical-align: middle; + + &.no-bg { + background-color: transparent; } - .comments { - margin-bottom: 5px; - margin-top: 10px; + &.no-pd-left { + padding-left: 0; } - .fa.fa-comment { - vertical-align: middle; - margin-right: 5px; - font-size: 14px; - color: $medium-blue; + &.no-pd-right { + padding-right: 0; } + } - .list_row { - margin-bottom: 5px; - font-size: 12px; + .comments { + margin-bottom: 5px; + margin-top: 10px; + } - .list_row_label { - font-weight: $fontweight800; - } - } + .fa.fa-comment { + vertical-align: middle; + margin-right: 5px; + font-size: 14px; + color: $medium-blue; + } - .list_area { - margin-top: 0px; - } + .list_row { + margin-bottom: 5px; + font-size: 12px; - .empty-area-warning { - color: #cc3b6b; + .list_row_label { + font-weight: $fontweight800; } + } + + .list_area { + margin-top: 0px; + } + + .empty-area-warning { + color: #cc3b6b; + } } .dropdown-toggle { - .flex-container { - display: flex; - align-items: center; - justify-content: center; - } + .flex-container { + display: flex; + align-items: center; + justify-content: center; + } } .truncate-text { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - display: inline-block; - max-width: 100%; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: inline-block; + max-width: 100%; } .wrap { - white-space: normal; - overflow: visible; - text-overflow: unset; -} \ No newline at end of file + white-space: normal; + overflow: visible; + text-overflow: unset; +} + +.back_link_button { + cursor: pointer; + border: none; + font-size: 12px; + border-bottom: 1px solid #333; + color: #333; + background-color: inherit; + + &:hover { + border-bottom: 2px solid #333; + } +} From e8b4bc752c2a9829b001f62411b87c54fd19278e Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Thu, 6 Nov 2025 16:21:42 +0100 Subject: [PATCH 122/149] bugfix: build problem --- .../templates/listentry/{EntryBacklink.tsx => BackLink.tsx} | 6 +++--- vis/js/templates/listentry/StandardListEntry.tsx | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) rename vis/js/templates/listentry/{EntryBacklink.tsx => BackLink.tsx} (82%) diff --git a/vis/js/templates/listentry/EntryBacklink.tsx b/vis/js/templates/listentry/BackLink.tsx similarity index 82% rename from vis/js/templates/listentry/EntryBacklink.tsx rename to vis/js/templates/listentry/BackLink.tsx index 9e2c2dda7..021b3599b 100644 --- a/vis/js/templates/listentry/EntryBacklink.tsx +++ b/vis/js/templates/listentry/BackLink.tsx @@ -4,12 +4,12 @@ import { useVisualizationType } from "@/hooks"; import { useLocalizationContext } from "../../components/LocalizationProvider"; -interface EntryBackLinkProps { +interface BackLinkProps { isInStream: boolean; onClick: () => void; } -const EntryBackLink: FC<EntryBackLinkProps> = ({ isInStream, onClick }) => { +const BackLink: FC<BackLinkProps> = ({ isInStream, onClick }) => { const localization = useLocalizationContext(); const { isStreamgraph } = useVisualizationType(); @@ -28,4 +28,4 @@ const EntryBackLink: FC<EntryBackLinkProps> = ({ isInStream, onClick }) => { ); }; -export default EntryBackLink; +export default BackLink; diff --git a/vis/js/templates/listentry/StandardListEntry.tsx b/vis/js/templates/listentry/StandardListEntry.tsx index 762fa60cd..383a640e3 100644 --- a/vis/js/templates/listentry/StandardListEntry.tsx +++ b/vis/js/templates/listentry/StandardListEntry.tsx @@ -12,12 +12,12 @@ import { mapDispatchToListEntriesProps } from "../../utils/eventhandlers"; import Abstract from "./Abstract"; import AccessIcons from "./AccessIcons"; import Area from "./Area"; +import BackLink from "./BackLink"; import Citations from "./Citations"; import Comments from "./Comments"; import Details from "./Details"; import DocTypesRow from "./DocTypesRow"; import DocumentType from "./DocumentType"; -import EntryBackLink from "./EntryBackLink"; import Keywords from "./Keywords"; import Link from "./Link"; import { Location } from "./Location"; @@ -128,7 +128,7 @@ const StandardListEntry: FC<StandardListEntryProps> = ({ <PaperButtons paper={paper} /> {showArea && <Area paper={paper} isShort={showCitations} />} {showBackLink && ( - <EntryBackLink + <BackLink onClick={handleBackLinkClick} isInStream={isInStreamBackLink} /> From d872f9d816ac14f41226521f621e9e69be53f771 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Fri, 7 Nov 2025 09:49:27 +0100 Subject: [PATCH 123/149] feat: the Credit line component in geomap visualizations --- vis/js/components/Footer.tsx | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/vis/js/components/Footer.tsx b/vis/js/components/Footer.tsx index a090457d1..54f906eba 100644 --- a/vis/js/components/Footer.tsx +++ b/vis/js/components/Footer.tsx @@ -1,7 +1,11 @@ import React from "react"; import { connect } from "react-redux"; -import CreatedBy from "../templates/footers/CreatedBy"; + import { STREAMGRAPH_MODE } from "../reducers/chartType"; +import CreatedBy from "../templates/footers/CreatedBy"; +import { ServiceType, State } from "../types"; + +const SUPPORTED_SERVICES = ["base", "pubmed", "openaire", "orcid", "aquanavi"]; const Footer = ({ service, @@ -10,8 +14,8 @@ const Footer = ({ faqsUrlStr, isStreamgraph, }: { - service: string; - timestamp: string; + service: ServiceType; + timestamp: string | undefined; faqsUrl: string; faqsUrlStr: string; isStreamgraph: boolean; @@ -20,10 +24,7 @@ const Footer = ({ return null; } - if ( - service.startsWith("triple") || - ["base", "pubmed", "openaire", "orcid"].includes(service) - ) { + if (service.startsWith("triple") || SUPPORTED_SERVICES.includes(service)) { return ( <CreatedBy timestamp={timestamp} @@ -35,7 +36,7 @@ const Footer = ({ return null; }; -const mapStateToProps = (state: any) => ({ +const mapStateToProps = (state: State) => ({ service: state.service, timestamp: state.misc.timestamp, faqsUrl: state.modals.FAQsUrl, From f98edd04edf56180a86f8612572f81554982bca0 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Mon, 10 Nov 2025 12:40:45 +0100 Subject: [PATCH 124/149] feat: list scroll for streamgraphs and geomaps --- vis/js/middleware/scroll.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vis/js/middleware/scroll.ts b/vis/js/middleware/scroll.ts index 2911b7d7b..c03d7acaf 100644 --- a/vis/js/middleware/scroll.ts +++ b/vis/js/middleware/scroll.ts @@ -10,7 +10,7 @@ const scrollMiddleware = ({ getState }) => { return (next) => (action: any) => { const selectedPaper = getState().selectedPaper; const returnValue = next(action); - if (action.type === "ZOOM_OUT") { + if (action.type === "ZOOM_OUT" || action.type === "DESELECT_PAPER") { if (selectedPaper !== null) { scrollList(selectedPaper.safeId); } else { @@ -37,7 +37,7 @@ const scrollList = (safeId) => { requestAnimationFrame(() => { let scrollTop = 0; if (safeId) { - scrollTop = $("#" + safeId).offset().top - $("#papers_list").offset().top; + scrollTop = $(`#${safeId}`).offset().top - $("#papers_list").offset().top; } $("#papers_list").animate({ scrollTop }, 0); }); From b625e19a9bab65067cfcc8c81c430a0fbea3acd6 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Mon, 10 Nov 2025 13:00:29 +0100 Subject: [PATCH 125/149] feat: layer switcher and zoom controls disabling with config --- vis/js/templates/Geomap/config.ts | 4 ++++ vis/js/templates/Geomap/index.tsx | 7 ++++--- vis/js/templates/Geomap/types.ts | 6 ++++++ 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/vis/js/templates/Geomap/config.ts b/vis/js/templates/Geomap/config.ts index 2f6219698..41c1588cc 100644 --- a/vis/js/templates/Geomap/config.ts +++ b/vis/js/templates/Geomap/config.ts @@ -18,4 +18,8 @@ export const CONFIG: Config = { ZOOM_CONTROL: { position: "bottomright", }, + FEATURES_DISABLING: { + isShowLayersSwitcher: true, + isShowZoomControls: true, + }, }; diff --git a/vis/js/templates/Geomap/index.tsx b/vis/js/templates/Geomap/index.tsx index 99c880807..ce456e3e6 100644 --- a/vis/js/templates/Geomap/index.tsx +++ b/vis/js/templates/Geomap/index.tsx @@ -8,13 +8,14 @@ import { HeightContainer } from "./HeightContainer"; import { LayersSwitcher } from "./LayersSwitcher"; import { Pins } from "./Pins"; -const { MAP, ZOOM_CONTROL } = CONFIG; +const { MAP, ZOOM_CONTROL, FEATURES_DISABLING } = CONFIG; +const { isShowLayersSwitcher, isShowZoomControls } = FEATURES_DISABLING; export const Geomap: FC = () => ( <HeightContainer> <MapContainer {...MAP} className="geomap_container"> - <ZoomControl {...ZOOM_CONTROL} /> - <LayersSwitcher /> + {isShowZoomControls && <ZoomControl {...ZOOM_CONTROL} />} + {isShowLayersSwitcher && <LayersSwitcher />} <Pins /> </MapContainer> </HeightContainer> diff --git a/vis/js/templates/Geomap/types.ts b/vis/js/templates/Geomap/types.ts index 1c7a0658a..8103dc77b 100644 --- a/vis/js/templates/Geomap/types.ts +++ b/vis/js/templates/Geomap/types.ts @@ -16,7 +16,13 @@ interface ZoomControl { position?: "topleft" | "topright" | "bottomleft" | "bottomright"; } +interface FeaturesDisabling { + isShowLayersSwitcher: boolean; + isShowZoomControls: boolean; +} + export interface Config { MAP: Map; ZOOM_CONTROL: ZoomControl; + FEATURES_DISABLING: FeaturesDisabling; } From 08d0a764b815824a83b6f69f31feb8be3e713963 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Mon, 10 Nov 2025 13:03:18 +0100 Subject: [PATCH 126/149] refactor: better types for the config --- vis/js/templates/Geomap/types.ts | 39 ++++++++++++++++---------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/vis/js/templates/Geomap/types.ts b/vis/js/templates/Geomap/types.ts index 8103dc77b..55c77fc5c 100644 --- a/vis/js/templates/Geomap/types.ts +++ b/vis/js/templates/Geomap/types.ts @@ -1,28 +1,29 @@ -import { LatLngBoundsExpression, LatLngTuple } from "leaflet"; +import { Control, MapOptions } from "leaflet"; -interface Map { - center: LatLngTuple; - zoom: number; - minZoom: number; - maxZoom: number; - maxBounds: LatLngBoundsExpression; - maxBoundsViscosity: number; - worldCopyJump: boolean; - keyboard: boolean; - zoomControl: boolean; -} +type MapConfig = Required< + Pick< + MapOptions, + | "center" + | "zoom" + | "minZoom" + | "maxZoom" + | "maxBounds" + | "maxBoundsViscosity" + | "worldCopyJump" + | "keyboard" + | "zoomControl" + > +>; -interface ZoomControl { - position?: "topleft" | "topright" | "bottomleft" | "bottomright"; -} +type ZoomControlConfig = Control.ZoomOptions; -interface FeaturesDisabling { +interface FeaturesDisablingConfig { isShowLayersSwitcher: boolean; isShowZoomControls: boolean; } export interface Config { - MAP: Map; - ZOOM_CONTROL: ZoomControl; - FEATURES_DISABLING: FeaturesDisabling; + MAP: MapConfig; + ZOOM_CONTROL: ZoomControlConfig; + FEATURES_DISABLING: FeaturesDisablingConfig; } From 03d8ed974f45d04ef749a285c7a23f69e0ecba69 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Mon, 10 Nov 2025 13:15:36 +0100 Subject: [PATCH 127/149] refactor: naming of the properties in the config --- vis/js/templates/Geomap/config.ts | 2 +- vis/js/templates/Geomap/index.tsx | 4 ++-- vis/js/templates/Geomap/types.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/vis/js/templates/Geomap/config.ts b/vis/js/templates/Geomap/config.ts index 41c1588cc..5fbed9113 100644 --- a/vis/js/templates/Geomap/config.ts +++ b/vis/js/templates/Geomap/config.ts @@ -20,6 +20,6 @@ export const CONFIG: Config = { }, FEATURES_DISABLING: { isShowLayersSwitcher: true, - isShowZoomControls: true, + isShowZoomControl: true, }, }; diff --git a/vis/js/templates/Geomap/index.tsx b/vis/js/templates/Geomap/index.tsx index ce456e3e6..c165e6fae 100644 --- a/vis/js/templates/Geomap/index.tsx +++ b/vis/js/templates/Geomap/index.tsx @@ -9,12 +9,12 @@ import { LayersSwitcher } from "./LayersSwitcher"; import { Pins } from "./Pins"; const { MAP, ZOOM_CONTROL, FEATURES_DISABLING } = CONFIG; -const { isShowLayersSwitcher, isShowZoomControls } = FEATURES_DISABLING; +const { isShowLayersSwitcher, isShowZoomControl } = FEATURES_DISABLING; export const Geomap: FC = () => ( <HeightContainer> <MapContainer {...MAP} className="geomap_container"> - {isShowZoomControls && <ZoomControl {...ZOOM_CONTROL} />} + {isShowZoomControl && <ZoomControl {...ZOOM_CONTROL} />} {isShowLayersSwitcher && <LayersSwitcher />} <Pins /> </MapContainer> diff --git a/vis/js/templates/Geomap/types.ts b/vis/js/templates/Geomap/types.ts index 55c77fc5c..b60dd99a3 100644 --- a/vis/js/templates/Geomap/types.ts +++ b/vis/js/templates/Geomap/types.ts @@ -19,7 +19,7 @@ type ZoomControlConfig = Control.ZoomOptions; interface FeaturesDisablingConfig { isShowLayersSwitcher: boolean; - isShowZoomControls: boolean; + isShowZoomControl: boolean; } export interface Config { From 418eb3e6723220077eec31549d36d487ce651da0 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Mon, 10 Nov 2025 13:55:36 +0100 Subject: [PATCH 128/149] feat: remove create a knowledge map button for geomaps --- vis/js/components/Footer.tsx | 37 ++++++++++---------- vis/js/components/Headstart.tsx | 17 ++++----- vis/js/templates/footers/CreateMapButton.tsx | 30 ++++++++++++++++ vis/stylesheets/modules/_footer.scss | 13 +++++++ 4 files changed, 71 insertions(+), 26 deletions(-) create mode 100644 vis/js/templates/footers/CreateMapButton.tsx diff --git a/vis/js/components/Footer.tsx b/vis/js/components/Footer.tsx index 54f906eba..c6d6a7495 100644 --- a/vis/js/components/Footer.tsx +++ b/vis/js/components/Footer.tsx @@ -1,35 +1,37 @@ -import React from "react"; +import { FC } from "react"; import { connect } from "react-redux"; -import { STREAMGRAPH_MODE } from "../reducers/chartType"; +import { useVisualizationType } from "@/hooks"; + import CreatedBy from "../templates/footers/CreatedBy"; +import { CreateMapButton } from "../templates/footers/CreateMapButton"; import { ServiceType, State } from "../types"; +interface FooterProps { + service: ServiceType; + timestamp: string | undefined; + faqsUrl: string; + faqsUrlStr: string; +} + const SUPPORTED_SERVICES = ["base", "pubmed", "openaire", "orcid", "aquanavi"]; -const Footer = ({ +const Footer: FC<FooterProps> = ({ service, timestamp, faqsUrl, faqsUrlStr, - isStreamgraph, -}: { - service: ServiceType; - timestamp: string | undefined; - faqsUrl: string; - faqsUrlStr: string; - isStreamgraph: boolean; }) => { - if (typeof service !== "string") { - return null; - } + const { isStreamgraph } = useVisualizationType(); if (service.startsWith("triple") || SUPPORTED_SERVICES.includes(service)) { + const FAQUrl = isStreamgraph ? faqsUrlStr : faqsUrl; + return ( - <CreatedBy - timestamp={timestamp} - faqsUrl={isStreamgraph ? faqsUrlStr : faqsUrl} - /> + <> + <CreatedBy timestamp={timestamp} faqsUrl={FAQUrl} /> + <CreateMapButton /> + </> ); } @@ -41,7 +43,6 @@ const mapStateToProps = (state: State) => ({ timestamp: state.misc.timestamp, faqsUrl: state.modals.FAQsUrl, faqsUrlStr: state.modals.FAQsUrlStr, - isStreamgraph: state.chartType === STREAMGRAPH_MODE, }); export default connect(mapStateToProps)(Footer); diff --git a/vis/js/components/Headstart.tsx b/vis/js/components/Headstart.tsx index 85bf7fc5d..58b363377 100644 --- a/vis/js/components/Headstart.tsx +++ b/vis/js/components/Headstart.tsx @@ -1,16 +1,17 @@ -import React, { FC } from "react"; +import { FC } from "react"; import { connect } from "react-redux"; + +import { Localization } from "../i18n/localization"; +import Loading from "../templates/Loading"; +import { State, VisualizationTypes } from "../types"; +import { getVisualizationComponent } from "../utils/getVisualizationComponent"; +import Footer from "./Footer"; +import List from "./List"; import LocalizationProvider from "./LocalizationProvider"; import ModalButtons from "./ModalButtons"; import Modals from "./Modals"; -import Toolbar from "./Toolbar"; -import Loading from "../templates/Loading"; -import List from "./List"; import TitleContext from "./TitleContext"; -import Footer from "./Footer"; -import { getVisualizationComponent } from "../utils/getVisualizationComponent"; -import { State, VisualizationTypes } from "../types"; -import { Localization } from "../i18n/localization"; +import Toolbar from "./Toolbar"; interface HeadstartProps { renderMap: boolean; diff --git a/vis/js/templates/footers/CreateMapButton.tsx b/vis/js/templates/footers/CreateMapButton.tsx new file mode 100644 index 000000000..e31bf5cd4 --- /dev/null +++ b/vis/js/templates/footers/CreateMapButton.tsx @@ -0,0 +1,30 @@ +import { FC } from "react"; +import { useSelector } from "react-redux"; + +import { useVisualizationType } from "@/hooks"; +import { State } from "@/js/types"; + +const getIsEmbed = (state: State) => state.misc.isEmbedded; + +export const CreateMapButton: FC = () => { + const isEmbed = useSelector(getIsEmbed); + const { isGeoMap } = useVisualizationType(); + + if (isEmbed) { + return null; + } + + if (isGeoMap) { + return <div className="space_between_visualization_and_footer" />; + } + + return ( + <div className="create_knowledge_map_button_container"> + <p className="try-now"> + <a target="_blank" className="donate-now" href="index"> + Create a knowledge map + </a> + </p> + </div> + ); +}; diff --git a/vis/stylesheets/modules/_footer.scss b/vis/stylesheets/modules/_footer.scss index 5de6a37f7..4f0df404f 100644 --- a/vis/stylesheets/modules/_footer.scss +++ b/vis/stylesheets/modules/_footer.scss @@ -14,6 +14,19 @@ } } +.create_knowledge_map_button_container { + border-top: 0px solid #cacfd3; + padding: 50px 20px; + + & > p { + text-align: "center"; + } +} + +.space_between_visualization_and_footer { + height: 24px; +} + @media screen and (max-width: 1210px) { .builtwith { font-size: 11px; From 8f0ccfb2786b7eed656cb31d33290efdc56dba32 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Mon, 10 Nov 2025 13:59:15 +0100 Subject: [PATCH 129/149] bugfix: situations when service is equals to null --- vis/js/components/Footer.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vis/js/components/Footer.tsx b/vis/js/components/Footer.tsx index c6d6a7495..0b1316fad 100644 --- a/vis/js/components/Footer.tsx +++ b/vis/js/components/Footer.tsx @@ -24,7 +24,7 @@ const Footer: FC<FooterProps> = ({ }) => { const { isStreamgraph } = useVisualizationType(); - if (service.startsWith("triple") || SUPPORTED_SERVICES.includes(service)) { + if (service?.startsWith("triple") || SUPPORTED_SERVICES.includes(service)) { const FAQUrl = isStreamgraph ? faqsUrlStr : faqsUrl; return ( From b1d2aac9983cee068540c8ddbbaebec85b250932 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Tue, 11 Nov 2025 10:33:43 +0100 Subject: [PATCH 130/149] refactor: remove space between the credit line and vis --- vis/js/templates/footers/CreateMapButton.tsx | 6 +----- vis/stylesheets/modules/_footer.scss | 4 ---- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/vis/js/templates/footers/CreateMapButton.tsx b/vis/js/templates/footers/CreateMapButton.tsx index e31bf5cd4..d98541ed4 100644 --- a/vis/js/templates/footers/CreateMapButton.tsx +++ b/vis/js/templates/footers/CreateMapButton.tsx @@ -10,14 +10,10 @@ export const CreateMapButton: FC = () => { const isEmbed = useSelector(getIsEmbed); const { isGeoMap } = useVisualizationType(); - if (isEmbed) { + if (isEmbed || isGeoMap) { return null; } - if (isGeoMap) { - return <div className="space_between_visualization_and_footer" />; - } - return ( <div className="create_knowledge_map_button_container"> <p className="try-now"> diff --git a/vis/stylesheets/modules/_footer.scss b/vis/stylesheets/modules/_footer.scss index 4f0df404f..da73db9a2 100644 --- a/vis/stylesheets/modules/_footer.scss +++ b/vis/stylesheets/modules/_footer.scss @@ -23,10 +23,6 @@ } } -.space_between_visualization_and_footer { - height: 24px; -} - @media screen and (max-width: 1210px) { .builtwith { font-size: 11px; From 8c1142e522f4733a61eea9222daa836e33d37358 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Tue, 11 Nov 2025 14:40:40 +0100 Subject: [PATCH 131/149] feat: layer switching disabling --- vis/js/default-config.ts | 9 +++- vis/js/reducers/geomapSettings.ts | 41 +++++++++++++++++++ vis/js/reducers/index.ts | 10 +++-- .../Geomap/Layer/BaseLayer/index.tsx | 10 +++++ .../{ => Layer}/LayersSwitcher/index.tsx | 8 ++-- .../{LayersSwitcher => Layer}/config.ts | 2 +- vis/js/templates/Geomap/Layer/index.tsx | 17 ++++++++ vis/js/templates/Geomap/Layer/selectors.ts | 5 +++ .../Geomap/{LayersSwitcher => Layer}/types.ts | 2 +- vis/js/templates/Geomap/config.ts | 4 -- vis/js/templates/Geomap/index.tsx | 29 +++++++------ vis/js/templates/Geomap/selectors.ts | 5 +++ vis/js/templates/Geomap/types.ts | 6 --- vis/js/types/actions/index.ts | 6 +++ vis/js/types/configs/config.ts | 7 ++++ vis/js/types/index.ts | 2 + vis/js/types/state/index.ts | 1 + vis/js/types/state/slices/geomapSettings.ts | 6 +++ vis/js/types/state/slices/index.ts | 5 ++- 19 files changed, 140 insertions(+), 35 deletions(-) create mode 100644 vis/js/reducers/geomapSettings.ts create mode 100644 vis/js/templates/Geomap/Layer/BaseLayer/index.tsx rename vis/js/templates/Geomap/{ => Layer}/LayersSwitcher/index.tsx (65%) rename vis/js/templates/Geomap/{LayersSwitcher => Layer}/config.ts (98%) create mode 100644 vis/js/templates/Geomap/Layer/index.tsx create mode 100644 vis/js/templates/Geomap/Layer/selectors.ts rename vis/js/templates/Geomap/{LayersSwitcher => Layer}/types.ts (86%) create mode 100644 vis/js/templates/Geomap/selectors.ts create mode 100644 vis/js/types/actions/index.ts create mode 100644 vis/js/types/state/slices/geomapSettings.ts diff --git a/vis/js/default-config.ts b/vis/js/default-config.ts index 92c79c681..d8154a376 100644 --- a/vis/js/default-config.ts +++ b/vis/js/default-config.ts @@ -1,7 +1,6 @@ import { localization } from "./i18n/localization"; import { Config } from "./types"; -/* eslint-disable no-template-curly-in-string */ var config: Config = { /*** basic visualization modes ***/ //show list @@ -236,6 +235,14 @@ var config: Config = { scale_types: [], visualization_type: "overview", + + geomap: { + // An object containing settings that can disable certain features in the geomap visualization type + featuresConfiguration: { + isWithLayerSwitcher: true, // This flag activates or deactivates the layer switching functionality + isWithZoomControl: true, // This flag shows or hides the zoom control component + }, + }, }; if (config.content_based) { diff --git a/vis/js/reducers/geomapSettings.ts b/vis/js/reducers/geomapSettings.ts new file mode 100644 index 000000000..c543ee111 --- /dev/null +++ b/vis/js/reducers/geomapSettings.ts @@ -0,0 +1,41 @@ +import { GEOMAP_MODE } from "@js/reducers/chartType"; +import { Action, GeomapSettings } from "@js/types"; + +const DEFAULT_STATE_VALUE: GeomapSettings = { + featuresConfiguration: { + isWithLayerSwitcher: true, + isWithZoomControl: true, + }, +}; + +type GeomapReducerType = ( + prevState: GeomapSettings | undefined, + action: Action, +) => GeomapSettings; + +export const geomapSettings: GeomapReducerType = (prevState, action) => { + const state = prevState ?? DEFAULT_STATE_VALUE; + + switch (action.type) { + case "INITIALIZE": { + if (!("configObject" in action) || !action.configObject) { + return DEFAULT_STATE_VALUE; + } + + const { visualization_type, geomap } = action.configObject; + + if (visualization_type !== GEOMAP_MODE) { + return DEFAULT_STATE_VALUE; + } + + const settings = geomap.featuresConfiguration; + + return { + featuresConfiguration: { ...settings }, + }; + } + default: { + return state; + } + } +}; diff --git a/vis/js/reducers/index.ts b/vis/js/reducers/index.ts index 84e8e0c19..3b9dccb6c 100644 --- a/vis/js/reducers/index.ts +++ b/vis/js/reducers/index.ts @@ -3,6 +3,7 @@ */ import { combineReducers } from "redux"; +import { Config } from "../types"; import animation from "./animation"; import areas from "./areas"; import author from "./author"; @@ -11,6 +12,7 @@ import chart from "./chart"; import chartType from "./chartType"; import contextLine from "./contextLine"; import data from "./data"; +import { geomapSettings } from "./geomapSettings"; import heading from "./heading"; import highlightedBubble from "./highlightedBubble"; import hyphenationLang from "./hyphenationLang"; @@ -18,8 +20,11 @@ import isCovis from "./isCovis"; import list from "./list"; import localization from "./localization"; import misc from "./misc"; +import modalInfoType from "./modalInfoType"; import modals from "./modals"; +import paper from "./paper"; import paperOrder from "./paperOrder"; +import q_advanced from "./q_advanced"; import query from "./query"; import selectedBubble from "./selectedBubble"; import selectedPaper from "./selectedPaper"; @@ -29,10 +34,6 @@ import timespan from "./timespan"; import toolbar from "./toolbar"; import tracking from "./tracking"; import zoom from "./zoom"; -import q_advanced from "./q_advanced"; -import modalInfoType from "./modalInfoType"; -import paper from "./paper"; -import { Config } from "../types"; export default combineReducers({ animation, @@ -64,6 +65,7 @@ export default combineReducers({ zoom, q_advanced, modalInfoType, + geomapSettings, }); export const getInitialState = (config: Config) => { diff --git a/vis/js/templates/Geomap/Layer/BaseLayer/index.tsx b/vis/js/templates/Geomap/Layer/BaseLayer/index.tsx new file mode 100644 index 000000000..c625282ca --- /dev/null +++ b/vis/js/templates/Geomap/Layer/BaseLayer/index.tsx @@ -0,0 +1,10 @@ +import { FC } from "react"; +import { TileLayer } from "react-leaflet"; + +import { CONFIG } from "../config"; + +const { LAYERS, CHECKED_LAYER_INDEX } = CONFIG; + +export const BaseLayer: FC = () => { + return <TileLayer {...LAYERS[CHECKED_LAYER_INDEX]} />; +}; diff --git a/vis/js/templates/Geomap/LayersSwitcher/index.tsx b/vis/js/templates/Geomap/Layer/LayersSwitcher/index.tsx similarity index 65% rename from vis/js/templates/Geomap/LayersSwitcher/index.tsx rename to vis/js/templates/Geomap/Layer/LayersSwitcher/index.tsx index b7f7540db..cef605879 100644 --- a/vis/js/templates/Geomap/LayersSwitcher/index.tsx +++ b/vis/js/templates/Geomap/Layer/LayersSwitcher/index.tsx @@ -1,14 +1,14 @@ import { FC } from "react"; import { LayersControl, TileLayer } from "react-leaflet"; -import { CONFIG } from "./config"; +import { CONFIG } from "../config"; -const { LAYERS, CHECKED_LAYER_NAME, POSITION } = CONFIG; +const { LAYERS, CHECKED_LAYER_INDEX, POSITION } = CONFIG; export const LayersSwitcher: FC = () => ( <LayersControl position={POSITION}> - {LAYERS.map(({ name, url, attribution }) => { - const isChecked = name === CHECKED_LAYER_NAME; + {LAYERS.map(({ name, url, attribution }, index) => { + const isChecked = index === CHECKED_LAYER_INDEX; return ( <LayersControl.BaseLayer key={name} checked={isChecked} name={name}> diff --git a/vis/js/templates/Geomap/LayersSwitcher/config.ts b/vis/js/templates/Geomap/Layer/config.ts similarity index 98% rename from vis/js/templates/Geomap/LayersSwitcher/config.ts rename to vis/js/templates/Geomap/Layer/config.ts index 2fbd54d10..3f47eccd4 100644 --- a/vis/js/templates/Geomap/LayersSwitcher/config.ts +++ b/vis/js/templates/Geomap/Layer/config.ts @@ -2,7 +2,7 @@ import { Config } from "./types"; export const CONFIG: Config = { POSITION: "topright", - CHECKED_LAYER_NAME: "Standard", + CHECKED_LAYER_INDEX: 0, LAYERS: [ { name: "Standard", diff --git a/vis/js/templates/Geomap/Layer/index.tsx b/vis/js/templates/Geomap/Layer/index.tsx new file mode 100644 index 000000000..a87ae0a10 --- /dev/null +++ b/vis/js/templates/Geomap/Layer/index.tsx @@ -0,0 +1,17 @@ +import { FC } from "react"; +import { useSelector } from "react-redux"; + +import { BaseLayer } from "./BaseLayer"; +import { LayersSwitcher } from "./LayersSwitcher"; +import { checkIsSwitchingAllowed } from "./selectors"; + +export const Layer: FC = () => { + const isWithLayerSwitchingFeature = useSelector(checkIsSwitchingAllowed); + + return ( + <> + {isWithLayerSwitchingFeature && <LayersSwitcher />} + {!isWithLayerSwitchingFeature && <BaseLayer />} + </> + ); +}; diff --git a/vis/js/templates/Geomap/Layer/selectors.ts b/vis/js/templates/Geomap/Layer/selectors.ts new file mode 100644 index 000000000..0fcb5ec0b --- /dev/null +++ b/vis/js/templates/Geomap/Layer/selectors.ts @@ -0,0 +1,5 @@ +import { State } from "@/js/types"; + +export const checkIsSwitchingAllowed = (state: State) => { + return state.geomapSettings.featuresConfiguration.isWithLayerSwitcher; +}; diff --git a/vis/js/templates/Geomap/LayersSwitcher/types.ts b/vis/js/templates/Geomap/Layer/types.ts similarity index 86% rename from vis/js/templates/Geomap/LayersSwitcher/types.ts rename to vis/js/templates/Geomap/Layer/types.ts index 89ea74180..b0ce279e7 100644 --- a/vis/js/templates/Geomap/LayersSwitcher/types.ts +++ b/vis/js/templates/Geomap/Layer/types.ts @@ -8,6 +8,6 @@ type Layer = { export interface Config { POSITION: ControlPosition; - CHECKED_LAYER_NAME: string; + CHECKED_LAYER_INDEX: number; LAYERS: Layer[]; } diff --git a/vis/js/templates/Geomap/config.ts b/vis/js/templates/Geomap/config.ts index 5fbed9113..2f6219698 100644 --- a/vis/js/templates/Geomap/config.ts +++ b/vis/js/templates/Geomap/config.ts @@ -18,8 +18,4 @@ export const CONFIG: Config = { ZOOM_CONTROL: { position: "bottomright", }, - FEATURES_DISABLING: { - isShowLayersSwitcher: true, - isShowZoomControl: true, - }, }; diff --git a/vis/js/templates/Geomap/index.tsx b/vis/js/templates/Geomap/index.tsx index c165e6fae..2e7fdf34d 100644 --- a/vis/js/templates/Geomap/index.tsx +++ b/vis/js/templates/Geomap/index.tsx @@ -2,21 +2,26 @@ import "leaflet/dist/leaflet.css"; import { FC } from "react"; import { MapContainer, ZoomControl } from "react-leaflet"; +import { useSelector } from "react-redux"; import { CONFIG } from "./config"; import { HeightContainer } from "./HeightContainer"; -import { LayersSwitcher } from "./LayersSwitcher"; +import { Layer } from "./Layer"; import { Pins } from "./Pins"; +import { getGeomapFeaturesSettings } from "./selectors"; -const { MAP, ZOOM_CONTROL, FEATURES_DISABLING } = CONFIG; -const { isShowLayersSwitcher, isShowZoomControl } = FEATURES_DISABLING; +const { MAP, ZOOM_CONTROL } = CONFIG; -export const Geomap: FC = () => ( - <HeightContainer> - <MapContainer {...MAP} className="geomap_container"> - {isShowZoomControl && <ZoomControl {...ZOOM_CONTROL} />} - {isShowLayersSwitcher && <LayersSwitcher />} - <Pins /> - </MapContainer> - </HeightContainer> -); +export const Geomap: FC = () => { + const { isWithZoomControl } = useSelector(getGeomapFeaturesSettings); + + return ( + <HeightContainer> + <MapContainer {...MAP} className="geomap_container"> + {isWithZoomControl && <ZoomControl {...ZOOM_CONTROL} />} + <Layer /> + <Pins /> + </MapContainer> + </HeightContainer> + ); +}; diff --git a/vis/js/templates/Geomap/selectors.ts b/vis/js/templates/Geomap/selectors.ts new file mode 100644 index 000000000..a03430305 --- /dev/null +++ b/vis/js/templates/Geomap/selectors.ts @@ -0,0 +1,5 @@ +import { State } from "@/js/types"; + +export const getGeomapFeaturesSettings = (state: State) => { + return state.geomapSettings.featuresConfiguration; +}; diff --git a/vis/js/templates/Geomap/types.ts b/vis/js/templates/Geomap/types.ts index b60dd99a3..89b87e718 100644 --- a/vis/js/templates/Geomap/types.ts +++ b/vis/js/templates/Geomap/types.ts @@ -17,13 +17,7 @@ type MapConfig = Required< type ZoomControlConfig = Control.ZoomOptions; -interface FeaturesDisablingConfig { - isShowLayersSwitcher: boolean; - isShowZoomControl: boolean; -} - export interface Config { MAP: MapConfig; ZOOM_CONTROL: ZoomControlConfig; - FEATURES_DISABLING: FeaturesDisablingConfig; } diff --git a/vis/js/types/actions/index.ts b/vis/js/types/actions/index.ts new file mode 100644 index 000000000..7c447da7e --- /dev/null +++ b/vis/js/types/actions/index.ts @@ -0,0 +1,6 @@ +import { Config } from "../configs/config"; + +export interface Action { + type: string; + configObject?: Config; +} diff --git a/vis/js/types/configs/config.ts b/vis/js/types/configs/config.ts index ebe6f783a..97675176c 100644 --- a/vis/js/types/configs/config.ts +++ b/vis/js/types/configs/config.ts @@ -146,4 +146,11 @@ export type Config = { is_force_area?: boolean; visualization_type: VisualizationTypes; + + geomap: { + featuresConfiguration: { + isWithLayerSwitcher: boolean; + isWithZoomControl: boolean; + }; + }; }; diff --git a/vis/js/types/index.ts b/vis/js/types/index.ts index a0a54dbd6..2ad6fad0e 100644 --- a/vis/js/types/index.ts +++ b/vis/js/types/index.ts @@ -29,6 +29,7 @@ export { VisualizationTypes } from "./visualization/visualization-types"; export { State } from "./state"; export { FilterValuesType, + GeomapSettings, SelectedPaper, SortValuesType, } from "./state/slices"; @@ -40,4 +41,5 @@ export { } from "./state/slices/toolbar"; // Redux actions types +export { Action } from "./actions"; export { ScaleMapAction } from "./actions/scale-map"; diff --git a/vis/js/types/state/index.ts b/vis/js/types/state/index.ts index 415409a8b..b8add3264 100644 --- a/vis/js/types/state/index.ts +++ b/vis/js/types/state/index.ts @@ -34,4 +34,5 @@ export interface State { toolbar: slices.Toolbar; tracking: slices.Tracking; zoom: boolean; + geomapSettings: slices.GeomapSettings; } diff --git a/vis/js/types/state/slices/geomapSettings.ts b/vis/js/types/state/slices/geomapSettings.ts new file mode 100644 index 000000000..c278b573f --- /dev/null +++ b/vis/js/types/state/slices/geomapSettings.ts @@ -0,0 +1,6 @@ +export interface GeomapSettings { + featuresConfiguration: { + isWithLayerSwitcher: boolean; + isWithZoomControl: boolean; + }; +} diff --git a/vis/js/types/state/slices/index.ts b/vis/js/types/state/slices/index.ts index 5c97ee86a..4159ced11 100644 --- a/vis/js/types/state/slices/index.ts +++ b/vis/js/types/state/slices/index.ts @@ -3,8 +3,9 @@ export { BubbleOrder } from "./bubble-order"; export { Chart } from "./chart"; export { ContextLine } from "./context-line"; export { Data } from "./data"; +export { GeomapSettings } from "./geomapSettings"; export { Heading } from "./heading"; -export { List, FilterValuesType, SortValuesType } from "./list"; +export { FilterValuesType, List, SortValuesType } from "./list"; export { Misc } from "./misc"; export { ModalInfoType } from "./modal-info-type"; export { Modals } from "./modals"; @@ -13,7 +14,7 @@ export { PaperOrder } from "./paper-order"; export { Query } from "./query"; export { QueryAdvanced } from "./query-advanced"; export { SelectedBubble } from "./selected-bubble"; +export { SelectedPaper } from "./selected-paper"; export { Streamgraph } from "./streamgraph"; export { Toolbar } from "./toolbar"; export { Tracking } from "./tracking"; -export { SelectedPaper } from "./selected-paper"; From 9e95458df37790805082bed7c6bb926f17ebaace Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Tue, 11 Nov 2025 14:48:50 +0100 Subject: [PATCH 132/149] refactor: components splitting --- .../templates/Geomap/ZoomControls/config.ts | 5 ++++ .../templates/Geomap/ZoomControls/index.tsx | 16 ++++++++++ .../Geomap/ZoomControls/selectors.ts | 5 ++++ vis/js/templates/Geomap/ZoomControls/types.ts | 3 ++ vis/js/templates/Geomap/config.ts | 29 ++++++++----------- vis/js/templates/Geomap/index.tsx | 29 +++++++------------ vis/js/templates/Geomap/selectors.ts | 5 ---- vis/js/templates/Geomap/types.ts | 11 ++----- 8 files changed, 54 insertions(+), 49 deletions(-) create mode 100644 vis/js/templates/Geomap/ZoomControls/config.ts create mode 100644 vis/js/templates/Geomap/ZoomControls/index.tsx create mode 100644 vis/js/templates/Geomap/ZoomControls/selectors.ts create mode 100644 vis/js/templates/Geomap/ZoomControls/types.ts delete mode 100644 vis/js/templates/Geomap/selectors.ts diff --git a/vis/js/templates/Geomap/ZoomControls/config.ts b/vis/js/templates/Geomap/ZoomControls/config.ts new file mode 100644 index 000000000..8a8ec1c4e --- /dev/null +++ b/vis/js/templates/Geomap/ZoomControls/config.ts @@ -0,0 +1,5 @@ +import { Config } from "./types"; + +export const CONFIG: Config = { + position: "bottomright", +}; diff --git a/vis/js/templates/Geomap/ZoomControls/index.tsx b/vis/js/templates/Geomap/ZoomControls/index.tsx new file mode 100644 index 000000000..9681e6bd8 --- /dev/null +++ b/vis/js/templates/Geomap/ZoomControls/index.tsx @@ -0,0 +1,16 @@ +import { FC } from "react"; +import { ZoomControl } from "react-leaflet"; +import { useSelector } from "react-redux"; + +import { CONFIG } from "./config"; +import { checkIsWithZoomControl } from "./selectors"; + +export const ZoomControls: FC = () => { + const isWithZoomControl = useSelector(checkIsWithZoomControl); + + if (!isWithZoomControl) { + return null; + } + + return <ZoomControl {...CONFIG} />; +}; diff --git a/vis/js/templates/Geomap/ZoomControls/selectors.ts b/vis/js/templates/Geomap/ZoomControls/selectors.ts new file mode 100644 index 000000000..51d1eeda7 --- /dev/null +++ b/vis/js/templates/Geomap/ZoomControls/selectors.ts @@ -0,0 +1,5 @@ +import { State } from "@/js/types"; + +export const checkIsWithZoomControl = (state: State) => { + return state.geomapSettings.featuresConfiguration.isWithZoomControl; +}; diff --git a/vis/js/templates/Geomap/ZoomControls/types.ts b/vis/js/templates/Geomap/ZoomControls/types.ts new file mode 100644 index 000000000..34d95299f --- /dev/null +++ b/vis/js/templates/Geomap/ZoomControls/types.ts @@ -0,0 +1,3 @@ +import { Control } from "leaflet"; + +export type Config = Control.ZoomOptions; diff --git a/vis/js/templates/Geomap/config.ts b/vis/js/templates/Geomap/config.ts index 2f6219698..d796e3249 100644 --- a/vis/js/templates/Geomap/config.ts +++ b/vis/js/templates/Geomap/config.ts @@ -1,21 +1,16 @@ import { Config } from "./types"; export const CONFIG: Config = { - MAP: { - center: [45.1, 4.1], - zoom: 4, - maxZoom: 17, - minZoom: 2, - maxBounds: [ - [-85, -180], - [85, 180], - ], - maxBoundsViscosity: 1.0, - worldCopyJump: true, - keyboard: false, - zoomControl: false, - }, - ZOOM_CONTROL: { - position: "bottomright", - }, + center: [45.1, 4.1], + zoom: 4, + maxZoom: 17, + minZoom: 2, + maxBounds: [ + [-85, -180], + [85, 180], + ], + maxBoundsViscosity: 1.0, + worldCopyJump: true, + keyboard: false, + zoomControl: false, }; diff --git a/vis/js/templates/Geomap/index.tsx b/vis/js/templates/Geomap/index.tsx index 2e7fdf34d..85b39c2c4 100644 --- a/vis/js/templates/Geomap/index.tsx +++ b/vis/js/templates/Geomap/index.tsx @@ -1,27 +1,20 @@ import "leaflet/dist/leaflet.css"; import { FC } from "react"; -import { MapContainer, ZoomControl } from "react-leaflet"; -import { useSelector } from "react-redux"; +import { MapContainer } from "react-leaflet"; import { CONFIG } from "./config"; import { HeightContainer } from "./HeightContainer"; import { Layer } from "./Layer"; import { Pins } from "./Pins"; -import { getGeomapFeaturesSettings } from "./selectors"; +import { ZoomControls } from "./ZoomControls"; -const { MAP, ZOOM_CONTROL } = CONFIG; - -export const Geomap: FC = () => { - const { isWithZoomControl } = useSelector(getGeomapFeaturesSettings); - - return ( - <HeightContainer> - <MapContainer {...MAP} className="geomap_container"> - {isWithZoomControl && <ZoomControl {...ZOOM_CONTROL} />} - <Layer /> - <Pins /> - </MapContainer> - </HeightContainer> - ); -}; +export const Geomap: FC = () => ( + <HeightContainer> + <MapContainer {...CONFIG} className="geomap_container"> + <ZoomControls /> + <Layer /> + <Pins /> + </MapContainer> + </HeightContainer> +); diff --git a/vis/js/templates/Geomap/selectors.ts b/vis/js/templates/Geomap/selectors.ts deleted file mode 100644 index a03430305..000000000 --- a/vis/js/templates/Geomap/selectors.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { State } from "@/js/types"; - -export const getGeomapFeaturesSettings = (state: State) => { - return state.geomapSettings.featuresConfiguration; -}; diff --git a/vis/js/templates/Geomap/types.ts b/vis/js/templates/Geomap/types.ts index 89b87e718..c7fe1061a 100644 --- a/vis/js/templates/Geomap/types.ts +++ b/vis/js/templates/Geomap/types.ts @@ -1,6 +1,6 @@ -import { Control, MapOptions } from "leaflet"; +import { MapOptions } from "leaflet"; -type MapConfig = Required< +export type Config = Required< Pick< MapOptions, | "center" @@ -14,10 +14,3 @@ type MapConfig = Required< | "zoomControl" > >; - -type ZoomControlConfig = Control.ZoomOptions; - -export interface Config { - MAP: MapConfig; - ZOOM_CONTROL: ZoomControlConfig; -} From 7f61ee040801771932afecbf1e8abeaac9af8ebd Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Tue, 11 Nov 2025 16:08:37 +0100 Subject: [PATCH 133/149] feat: pin deselection while map is clicked --- vis/js/templates/Geomap/HeightContainer/index.tsx | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/vis/js/templates/Geomap/HeightContainer/index.tsx b/vis/js/templates/Geomap/HeightContainer/index.tsx index 6abe66faf..92d624a76 100644 --- a/vis/js/templates/Geomap/HeightContainer/index.tsx +++ b/vis/js/templates/Geomap/HeightContainer/index.tsx @@ -1,10 +1,21 @@ import { FC, PropsWithChildren } from "react"; -import { useSelector } from "react-redux"; +import { useDispatch, useSelector } from "react-redux"; + +import { deselectPaper } from "@/js/actions"; import { getMapHeight } from "./selectors"; export const HeightContainer: FC<PropsWithChildren> = ({ children }) => { const height = useSelector(getMapHeight); + const dispatch = useDispatch(); + + const handleMapClick = () => { + dispatch(deselectPaper()); + }; - return <div style={{ height }}>{children}</div>; + return ( + <div style={{ height }} onClick={handleMapClick}> + {children} + </div> + ); }; From 8a26978129fe6113ad24b62a7af8fd6e0ccfe3f2 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Wed, 12 Nov 2025 10:51:35 +0100 Subject: [PATCH 134/149] bugfix: list scroll reset on the map click --- vis/js/templates/Geomap/HeightContainer/index.tsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/vis/js/templates/Geomap/HeightContainer/index.tsx b/vis/js/templates/Geomap/HeightContainer/index.tsx index 92d624a76..cc720c5b9 100644 --- a/vis/js/templates/Geomap/HeightContainer/index.tsx +++ b/vis/js/templates/Geomap/HeightContainer/index.tsx @@ -1,15 +1,19 @@ import { FC, PropsWithChildren } from "react"; import { useDispatch, useSelector } from "react-redux"; +import { useActiveDataItem } from "@/hooks"; import { deselectPaper } from "@/js/actions"; import { getMapHeight } from "./selectors"; export const HeightContainer: FC<PropsWithChildren> = ({ children }) => { + const { selectedItemId } = useActiveDataItem(); const height = useSelector(getMapHeight); const dispatch = useDispatch(); const handleMapClick = () => { + if (!selectedItemId) return; + dispatch(deselectPaper()); }; From b7fd1863190b158dfc33f0d4905d9a9b7fce66bf Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Wed, 12 Nov 2025 11:01:39 +0100 Subject: [PATCH 135/149] bugfix: no selection reset on map overview clicks --- .../Geomap/HeightContainer/index.tsx | 19 ++---------- .../Geomap/SelectionResetHandler/index.tsx | 30 +++++++++++++++++++ vis/js/templates/Geomap/index.tsx | 2 ++ 3 files changed, 34 insertions(+), 17 deletions(-) create mode 100644 vis/js/templates/Geomap/SelectionResetHandler/index.tsx diff --git a/vis/js/templates/Geomap/HeightContainer/index.tsx b/vis/js/templates/Geomap/HeightContainer/index.tsx index cc720c5b9..6abe66faf 100644 --- a/vis/js/templates/Geomap/HeightContainer/index.tsx +++ b/vis/js/templates/Geomap/HeightContainer/index.tsx @@ -1,25 +1,10 @@ import { FC, PropsWithChildren } from "react"; -import { useDispatch, useSelector } from "react-redux"; - -import { useActiveDataItem } from "@/hooks"; -import { deselectPaper } from "@/js/actions"; +import { useSelector } from "react-redux"; import { getMapHeight } from "./selectors"; export const HeightContainer: FC<PropsWithChildren> = ({ children }) => { - const { selectedItemId } = useActiveDataItem(); const height = useSelector(getMapHeight); - const dispatch = useDispatch(); - - const handleMapClick = () => { - if (!selectedItemId) return; - - dispatch(deselectPaper()); - }; - return ( - <div style={{ height }} onClick={handleMapClick}> - {children} - </div> - ); + return <div style={{ height }}>{children}</div>; }; diff --git a/vis/js/templates/Geomap/SelectionResetHandler/index.tsx b/vis/js/templates/Geomap/SelectionResetHandler/index.tsx new file mode 100644 index 000000000..a951394b7 --- /dev/null +++ b/vis/js/templates/Geomap/SelectionResetHandler/index.tsx @@ -0,0 +1,30 @@ +import { FC, useRef } from "react"; +import { useMapEvent } from "react-leaflet"; +import { useDispatch } from "react-redux"; + +import { useActiveDataItem } from "@/hooks"; +import { deselectPaper } from "@/js/actions"; + +export const SelectionResetHandler: FC = () => { + const dispatch = useDispatch(); + const { selectedItemId } = useActiveDataItem(); + const isMovingRef = useRef(false); + + useMapEvent("movestart", () => { + isMovingRef.current = true; + }); + + useMapEvent("moveend", () => { + requestAnimationFrame(() => { + isMovingRef.current = false; + }); + }); + + useMapEvent("click", () => { + if (!selectedItemId || isMovingRef.current) return; + + dispatch(deselectPaper()); + }); + + return null; +}; diff --git a/vis/js/templates/Geomap/index.tsx b/vis/js/templates/Geomap/index.tsx index 85b39c2c4..62dbcb2ce 100644 --- a/vis/js/templates/Geomap/index.tsx +++ b/vis/js/templates/Geomap/index.tsx @@ -7,11 +7,13 @@ import { CONFIG } from "./config"; import { HeightContainer } from "./HeightContainer"; import { Layer } from "./Layer"; import { Pins } from "./Pins"; +import { SelectionResetHandler } from "./SelectionResetHandler"; import { ZoomControls } from "./ZoomControls"; export const Geomap: FC = () => ( <HeightContainer> <MapContainer {...CONFIG} className="geomap_container"> + <SelectionResetHandler /> <ZoomControls /> <Layer /> <Pins /> From c5bf181ddfe91bb1e4256cdcf435bed3e4a15f11 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Wed, 12 Nov 2025 11:08:12 +0100 Subject: [PATCH 136/149] feat: globals for eslint --- eslint.config.mjs | 9 +++++++++ package-lock.json | 3 ++- package.json | 6 +++--- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index 579955c3e..4064fa61f 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -2,6 +2,7 @@ import js from "@eslint/js"; import parserBabel from "@babel/eslint-parser"; import parserTs from "@typescript-eslint/parser"; import pluginReact from "eslint-plugin-react"; +import globals from "globals"; import pluginReactHooks from "eslint-plugin-react-hooks"; import pluginTs from "@typescript-eslint/eslint-plugin"; import pluginSimpleImportSort from "eslint-plugin-simple-import-sort"; @@ -21,6 +22,10 @@ export default [ ecmaFeatures: { jsx: true }, project: true, }, + globals: { + ...globals.browser, + ...globals.es2021, + }, }, plugins: { "@typescript-eslint": pluginTs, @@ -81,6 +86,10 @@ export default [ ecmaFeatures: { jsx: true, }, + globals: { + ...globals.browser, + ...globals.es2021, + }, }, }, plugins: { diff --git a/package-lock.json b/package-lock.json index 4d8049aba..9ff946509 100644 --- a/package-lock.json +++ b/package-lock.json @@ -67,7 +67,7 @@ "eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-simple-import-sort": "^12.1.1", "file-loader": "^6.2.0", - "globals": "^15.13.0", + "globals": "^15.15.0", "html-webpack-plugin": "^5.5.0", "imports-loader": "^5.0.0", "jsdom": "^26.1.0", @@ -7256,6 +7256,7 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, diff --git a/package.json b/package.json index 0931debc8..c233db724 100644 --- a/package.json +++ b/package.json @@ -83,13 +83,14 @@ "@vitejs/plugin-react": "^4.4.1", "babel-loader": "^10.0.0", "bootstrap-sass": "^3.3.6", + "copy-webpack-plugin": "^13.0.1", "css-loader": "^7.1.2", "eslint": "^9.29.0", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-simple-import-sort": "^12.1.1", "file-loader": "^6.2.0", - "globals": "^15.13.0", + "globals": "^15.15.0", "html-webpack-plugin": "^5.5.0", "imports-loader": "^5.0.0", "jsdom": "^26.1.0", @@ -108,7 +109,6 @@ "webpack": "^5.99.8", "webpack-bundle-analyzer": "^4.5.0", "webpack-cli": "^6.0.1", - "webpack-dev-server": "^5.2.1", - "copy-webpack-plugin": "^13.0.1" + "webpack-dev-server": "^5.2.1" } } From a6c47fd066efc3c056031533bbe2dbb67a5ff798 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Thu, 13 Nov 2025 15:58:43 +0100 Subject: [PATCH 137/149] refactor: replace is_streamgraph with visualization_type --- vis/js/HeadstartRunner.tsx | 54 +-- vis/js/dataprocessing/managers/DataManager.ts | 12 +- vis/js/default-config.ts | 3 +- vis/js/reducers/chartType.ts | 52 +-- vis/js/reducers/data.ts | 4 +- vis/js/reducers/heading.ts | 13 +- vis/js/reducers/index.ts | 2 +- vis/js/reducers/timespan.ts | 11 +- vis/js/types/configs/config.ts | 1 - vis/js/utils/backButton.ts | 41 +- vis/js/utils/dimensions.ts | 9 +- vis/test/store/chartType.test.js | 22 +- vis/test/store/data.test.js | 4 +- vis/test/store/initialize.test.js | 355 +++++++++--------- 14 files changed, 308 insertions(+), 275 deletions(-) diff --git a/vis/js/HeadstartRunner.tsx b/vis/js/HeadstartRunner.tsx index d9f20de9c..41c4a5551 100644 --- a/vis/js/HeadstartRunner.tsx +++ b/vis/js/HeadstartRunner.tsx @@ -1,32 +1,29 @@ // @ts-nocheck -import ReactDOM from "react-dom"; +import Bowser from "bowser"; import React from "react"; -import { createStore } from "redux"; -import { Provider } from "react-redux"; +import ReactDOM from "react-dom"; import { createRoot } from "react-dom/client"; +import { Provider } from "react-redux"; +import { createStore } from "redux"; -import rootReducer, { getInitialState } from "./reducers"; import { - initializeStore, - updateDimensions, applyForceAreas, applyForcePapers, + initializeStore, + updateDimensions, } from "./actions"; - -import applyHeadstartMiddleware from "./middleware"; - -import { applyForce } from "./utils/force"; - -import { getChartSize, getListSize } from "./utils/dimensions"; import Headstart from "./components/Headstart"; -import { removeQueryParams } from "./utils/url"; -import debounce from "./utils/debounce"; -import DataManager from "./dataprocessing/managers/DataManager"; import FetcherFactory from "./dataprocessing/fetchers/FetcherFactory"; -import handleZoomSelectQuery from "./utils/backButton"; - -import Bowser from "bowser"; +import DataManager from "./dataprocessing/managers/DataManager"; +import applyHeadstartMiddleware from "./middleware"; +import rootReducer, { getInitialState } from "./reducers"; +import { STREAMGRAPH_MODE } from "./reducers/chartType"; import { Config } from "./types/config"; +import handleZoomSelectQuery from "./utils/backButton"; +import debounce from "./utils/debounce"; +import { getChartSize, getListSize } from "./utils/dimensions"; +import { applyForce } from "./utils/force"; +import { removeQueryParams } from "./utils/url"; class HeadstartRunner { public config: Config; @@ -79,7 +76,7 @@ class HeadstartRunner { const browserName = browser.getBrowserName(true); const isSupportedBrowser = SUPPORTED.map((browserName) => - browserName.toLowerCase() + browserName.toLowerCase(), ).includes(browserName); if (!isSupportedBrowser || !browserName) { @@ -88,7 +85,7 @@ class HeadstartRunner { "This visualization was successfully tested " + "with the latest versions of " + "Chrome, Firefox, Safari, Edge and Opera. " + - "We strongly recommend using one of these browsers." + "We strongly recommend using one of these browsers.", ); } } @@ -98,7 +95,7 @@ class HeadstartRunner { rootNode.render( <Provider store={this.store}> <Headstart /> - </Provider> + </Provider>, ); } @@ -116,7 +113,7 @@ class HeadstartRunner { const dataFetcher = FetcherFactory.getInstance(config.mode, { serverUrl: config.server_url, files: config.files, - isStreamgraph: config.is_streamgraph, + isStreamgraph: config.visualization_type === STREAMGRAPH_MODE, }); return await dataFetcher.getData(); @@ -145,11 +142,14 @@ class HeadstartRunner { height, list.height, this.dataManager.scalingFactors, - this.dataManager.author - ) + this.dataManager.author, + ), ); - if (!this.config.is_streamgraph) { + const { visualization_type: visualizationType } = this.config; + const isNotStreamgraph = visualizationType !== STREAMGRAPH_MODE; + + if (isNotStreamgraph) { this.applyForceLayout(); } } @@ -190,7 +190,7 @@ class HeadstartRunner { this.store.dispatch(applyForceAreas(newAreas, state.chart.height)), (newPapers: any) => this.store.dispatch(applyForcePapers(newPapers, state.chart.height)), - this.config + this.config, ); } @@ -210,7 +210,7 @@ class HeadstartRunner { scaleBy: string, baseUnit: string, isContentBased: boolean, - initialSort: string + initialSort: string, ) { this.config.scale_by = scaleBy; this.config.base_unit = baseUnit; diff --git a/vis/js/dataprocessing/managers/DataManager.ts b/vis/js/dataprocessing/managers/DataManager.ts index 648323881..f5d7eced6 100644 --- a/vis/js/dataprocessing/managers/DataManager.ts +++ b/vis/js/dataprocessing/managers/DataManager.ts @@ -1,7 +1,11 @@ // @ts-nocheck +import { AllPossiblePapersType, Config, Paper } from "@js/types"; import d3 from "d3"; import $ from "jquery"; -import { Config, Paper, AllPossiblePapersType } from "@js/types"; + +import { GEOMAP_MODE, STREAMGRAPH_MODE } from "@/js/reducers/chartType"; +import { AquanaviPaper } from "@/js/types/models/paper"; + import { checkIsAquanaviData, extractAuthors, @@ -25,8 +29,6 @@ import { } from "../../utils/scale"; import { transformData } from "../../utils/streamgraph"; import DEFAULT_SCHEME, { SchemeObject } from "../schemes/defaultScheme"; -import { GEOMAP_MODE } from "@/js/reducers/chartType"; -import { AquanaviPaper } from "@/js/types/models/paper"; const GOLDEN_RATIO = 2.6; @@ -65,7 +67,9 @@ class DataManager { // initialize this.scalingFactors this.__computeScalingFactors(this.papers.length); - if (!this.config.is_streamgraph) { + const { visualization_type: visualizationType } = this.config; + const isNotStreamgraph = visualizationType !== STREAMGRAPH_MODE; + if (isNotStreamgraph) { // scale this.papers based on the chart size this.__scalePapers(chartSize); // initialize this.areas diff --git a/vis/js/default-config.ts b/vis/js/default-config.ts index d8154a376..1b41b5d89 100644 --- a/vis/js/default-config.ts +++ b/vis/js/default-config.ts @@ -13,8 +13,7 @@ var config: Config = { is_authorview: false, //when set to true, scale map using metrics content_based: false, - //show streamgraph instead of map - is_streamgraph: false, + //tag that headstart is appended to tag: "visualization", diff --git a/vis/js/reducers/chartType.ts b/vis/js/reducers/chartType.ts index a2cca9fb0..bab783e86 100644 --- a/vis/js/reducers/chartType.ts +++ b/vis/js/reducers/chartType.ts @@ -1,39 +1,41 @@ -import { VisualizationTypes } from "../types"; +import { Action, VisualizationTypes } from "../types"; export const STREAMGRAPH_MODE = "timeline"; export const KNOWLEDGEMAP_MODE = "overview"; export const GEOMAP_MODE = "geomap"; +const WARNINGS = { + undefined: + "Chart type is not defined in the configuration. The overview one will be used as a fallback.", + notAllowed: + "Configured chart type is not allowed. The overview one will be used as a fallback.", +}; -const chartType = ( - state: VisualizationTypes = KNOWLEDGEMAP_MODE, - action: any, -) => { - if (action.canceled) { - return state; - } +type ChartTypeReducer = ( + prevState: VisualizationTypes | undefined, + action: Action, +) => VisualizationTypes; + +export const chartType: ChartTypeReducer = (prevState, action) => { + const state = prevState ?? KNOWLEDGEMAP_MODE; switch (action.type) { - case "INITIALIZE": - const isStreamgraph: boolean = action.configObject.is_streamgraph; - const type: VisualizationTypes = action.configObject.visualization_type; + case "INITIALIZE": { + const type = action.configObject?.visualization_type; - if (isStreamgraph) { - return STREAMGRAPH_MODE; + if (!type) { + console.warn(WARNINGS.undefined); + return KNOWLEDGEMAP_MODE; } - switch (type) { - case KNOWLEDGEMAP_MODE: - return KNOWLEDGEMAP_MODE; - case STREAMGRAPH_MODE: - return STREAMGRAPH_MODE; - case GEOMAP_MODE: - return GEOMAP_MODE; - default: - KNOWLEDGEMAP_MODE; + if (![STREAMGRAPH_MODE, KNOWLEDGEMAP_MODE, GEOMAP_MODE].includes(type)) { + console.warn(WARNINGS.notAllowed); + return KNOWLEDGEMAP_MODE; } - default: + + return type; + } + default: { return state; + } } }; - -export default chartType; diff --git a/vis/js/reducers/data.ts b/vis/js/reducers/data.ts index 241d3ba4b..f2e262d51 100644 --- a/vis/js/reducers/data.ts +++ b/vis/js/reducers/data.ts @@ -2,6 +2,7 @@ import d3 from "d3"; import { getValueOrZero } from "../utils/data"; import { getDiameterScale, getResizedScale } from "../utils/scale"; +import { STREAMGRAPH_MODE } from "./chartType"; const data = ( state = { list: [], options: {}, size: null } as any, @@ -21,7 +22,8 @@ const data = ( paperMaxScale: action.scalingFactors.paperMaxScale, paperWidthFactor: action.configObject.paper_width_factor, paperHeightFactor: action.configObject.paper_height_factor, - isStreamgraph: action.configObject.is_streamgraph, + isStreamgraph: + action.configObject.visualization_type === STREAMGRAPH_MODE, visualizationId: action.contextObject.id, hoveredItemId: null, }; diff --git a/vis/js/reducers/heading.ts b/vis/js/reducers/heading.ts index 4332242cc..140382ee4 100644 --- a/vis/js/reducers/heading.ts +++ b/vis/js/reducers/heading.ts @@ -1,5 +1,5 @@ import { Config } from "../types"; -import { GEOMAP_MODE } from "./chartType"; +import { GEOMAP_MODE, STREAMGRAPH_MODE } from "./chartType"; const context = (state = {}, action: any) => { if (action.canceled) { @@ -45,19 +45,22 @@ const getTitleStyle = (config: Config) => { }; const getTitleLabelType = (config: Config) => { - if (config.is_authorview && config.is_streamgraph) { + const isStreamgraph = config.visualization_type === STREAMGRAPH_MODE; + const isGeomap = config.visualization_type === GEOMAP_MODE; + + if (config.is_authorview && isStreamgraph) { return "authorview-streamgraph"; } - if (config.is_authorview && !config.is_streamgraph) { + if (config.is_authorview && !isStreamgraph) { return "authorview-knowledgemap"; } - if (config.is_streamgraph) { + if (isStreamgraph) { return "keywordview-streamgraph"; } - if (config.visualization_type === GEOMAP_MODE) { + if (isGeomap) { return "geomap"; } diff --git a/vis/js/reducers/index.ts b/vis/js/reducers/index.ts index 3b9dccb6c..450dbce8b 100644 --- a/vis/js/reducers/index.ts +++ b/vis/js/reducers/index.ts @@ -9,7 +9,7 @@ import areas from "./areas"; import author from "./author"; import bubbleOrder from "./bubbleOrder"; import chart from "./chart"; -import chartType from "./chartType"; +import { chartType } from "./chartType"; import contextLine from "./contextLine"; import data from "./data"; import { geomapSettings } from "./geomapSettings"; diff --git a/vis/js/reducers/timespan.ts b/vis/js/reducers/timespan.ts index b2ab0154d..2da833aac 100644 --- a/vis/js/reducers/timespan.ts +++ b/vis/js/reducers/timespan.ts @@ -1,6 +1,8 @@ // @ts-nocheck import dateFormat from "dateformat"; + +import { STREAMGRAPH_MODE } from "./chartType"; import { getModifier } from "./contextLine"; const timespan = (state = null, action: any) => { @@ -54,7 +56,10 @@ const getTimespan = (config, context) => { const modifier = getModifier(config, context); // most recent streamgraphs straight away display "Until xyz", // other maps have a more complicated logic - if (!config.is_streamgraph || modifier !== "most-recent") { + + const { visualization_type: visualizationType } = config; + const isNotStreamgraph = visualizationType !== STREAMGRAPH_MODE; + if (isNotStreamgraph || modifier !== "most-recent") { const defaultFromHyphenated = SERVICE_START[config.service] || SERVICE_START.default; @@ -62,11 +67,11 @@ const getTimespan = (config, context) => { const fromFormatted = dateFormat(from, displayFormat); if (fromHyphenated !== defaultFromHyphenated) { - return fromFormatted + " - " + toFormatted; + return `${fromFormatted} - ${toFormatted}`; } } - return "Until " + toFormatted; + return `Until ${toFormatted}`; }; const getTodayDate = () => { diff --git a/vis/js/types/configs/config.ts b/vis/js/types/configs/config.ts index 97675176c..f8cf3fba3 100644 --- a/vis/js/types/configs/config.ts +++ b/vis/js/types/configs/config.ts @@ -20,7 +20,6 @@ export type Config = { scale_toolbar: boolean; is_authorview: boolean; content_based: boolean; - is_streamgraph: boolean; tag: string; metric_list?: boolean; diff --git a/vis/js/utils/backButton.ts b/vis/js/utils/backButton.ts index 451a8d21f..cbe6ed7ae 100644 --- a/vis/js/utils/backButton.ts +++ b/vis/js/utils/backButton.ts @@ -1,5 +1,6 @@ import { deselectPaper, selectPaper, zoomIn, zoomOut } from "../actions"; import DataManager from "../dataprocessing/managers/DataManager"; +import { STREAMGRAPH_MODE } from "../reducers/chartType"; import { Config } from "../types"; import { createAnimationCallback } from "./eventhandlers"; @@ -14,8 +15,9 @@ import { createAnimationCallback } from "./eventhandlers"; const handleZoomSelectQuery = ( dataManager: DataManager, store: any, - config: Config + config: Config, ) => { + const isStreamgraph = config.visualization_type === STREAMGRAPH_MODE; const params = new URLSearchParams(window.location.search); if (params.has("area") && params.has("paper")) { @@ -28,7 +30,7 @@ const handleZoomSelectQuery = ( return; } - if (config.is_streamgraph && params.has("paper")) { + if (isStreamgraph && params.has("paper")) { selectPaperWithoutZoom(dataManager, store, params); return; } @@ -42,7 +44,7 @@ const zoomKnowledgeMap = ( dataManager: DataManager, store: any, areaID: string, - paper?: any + paper?: any, ) => { const area = dataManager.areas.find((a) => a.area_uri == areaID); @@ -56,8 +58,8 @@ const zoomKnowledgeMap = ( createAnimationCallback(store.dispatch), store.getState().zoom, true, - paper - ) + paper, + ), ); }; @@ -65,7 +67,7 @@ const zoomStreamgraph = ( dataManager: DataManager, store: any, streamID: string, - paper?: any + paper?: any, ) => { const stream = dataManager.streams.find((s: any) => s.key == streamID) as any; @@ -79,8 +81,8 @@ const zoomStreamgraph = ( null, store.getState().zoom, true, - paper - ) + paper, + ), ); }; @@ -88,10 +90,11 @@ const selectPaperWithZoom = ( dataManager: DataManager, store: any, params: any, - config: Config + config: Config, ) => { + const isStreamgraph = config.visualization_type === STREAMGRAPH_MODE; const paper = dataManager.papers.find( - (p) => p.safe_id === params.get("paper") + (p) => p.safe_id === params.get("paper"), ); if (!paper) { @@ -102,7 +105,7 @@ const selectPaperWithZoom = ( const areaID = params.get("area"); - if (config.is_streamgraph) { + if (isStreamgraph) { return zoomStreamgraph(dataManager, store, areaID, paper); } @@ -112,10 +115,10 @@ const selectPaperWithZoom = ( const selectPaperWithoutZoom = ( dataManager: DataManager, store: any, - params: any + params: any, ) => { const paper = dataManager.papers.find( - (p) => p.safe_id === params.get("paper") + (p) => p.safe_id === params.get("paper"), ); if (!paper) { @@ -129,8 +132,9 @@ const deselectAndZoomIn = ( dataManager: DataManager, store: any, params: any, - config: Config + config: Config, ) => { + const isStreamgraph = config.visualization_type === STREAMGRAPH_MODE; const areaID = params.get("area"); // possible optimization: only deselecting a paper if the area is the same @@ -138,7 +142,7 @@ const deselectAndZoomIn = ( // store.dispatch(deselectPaper()); // } - if (config.is_streamgraph) { + if (isStreamgraph) { return zoomStreamgraph(dataManager, store, areaID); } @@ -146,14 +150,15 @@ const deselectAndZoomIn = ( }; const deselectAndZoomOut = (store: any, config: Config) => { + const isStreamgraph = config.visualization_type === STREAMGRAPH_MODE; const { zoom, selectedPaper } = store.getState(); if (zoom) { store.dispatch( zoomOut( - config.is_streamgraph ? null : createAnimationCallback(store.dispatch), - true - ) + isStreamgraph ? null : createAnimationCallback(store.dispatch), + true, + ), ); return; diff --git a/vis/js/utils/dimensions.ts b/vis/js/utils/dimensions.ts index d50ca248f..a89beebff 100644 --- a/vis/js/utils/dimensions.ts +++ b/vis/js/utils/dimensions.ts @@ -1,6 +1,8 @@ // @ts-nocheck import $ from "jquery"; + +import { STREAMGRAPH_MODE } from "../reducers/chartType"; import { Config } from "../types/config"; // ?: fix scaling here? @@ -32,6 +34,7 @@ const FOOTER_HEIGHT: Record<string, number> = { * @param {Object} config the headstart config */ export const getChartSize = (config: Config) => { + const isStreamgraph = config.visualization_type === STREAMGRAPH_MODE; const container = $(`#${config.tag}`); // height section @@ -62,7 +65,7 @@ export const getChartSize = (config: Config) => { const finalHeight = Math.max( config.min_height, - Math.min(config.max_height, computedHeight) + Math.min(config.max_height, computedHeight), ); // width section @@ -70,11 +73,11 @@ export const getChartSize = (config: Config) => { // MODALS_WIDTH subtraction is questionable - I disabled it for streamgraph const computedWidth = - visWidth * VIS_COL_RATIO - (config.is_streamgraph ? 0 : MODALS_WIDTH); + visWidth * VIS_COL_RATIO - (isStreamgraph ? 0 : MODALS_WIDTH); const finalWidth = Math.max( config.min_width || 0, - Math.min(config.max_width || computedWidth, computedWidth) + Math.min(config.max_width || computedWidth, computedWidth), ); return { diff --git a/vis/test/store/chartType.test.js b/vis/test/store/chartType.test.js index 151724ef0..befe5d702 100644 --- a/vis/test/store/chartType.test.js +++ b/vis/test/store/chartType.test.js @@ -1,10 +1,10 @@ -import { expect, describe, it } from 'vitest'; +import { describe, expect, it } from "vitest"; import { initializeStore } from "../../js/actions"; - -import reducer, { - STREAMGRAPH_MODE, +import { + chartType, KNOWLEDGEMAP_MODE, + STREAMGRAPH_MODE, } from "../../js/reducers/chartType"; describe("chartType state", () => { @@ -12,7 +12,7 @@ describe("chartType state", () => { it("should return the initial state", () => { const expectedResult = KNOWLEDGEMAP_MODE; - const result = reducer(undefined, {}); + const result = chartType(undefined, {}); expect(result).toEqual(expectedResult); }); @@ -21,7 +21,10 @@ describe("chartType state", () => { const initialState = KNOWLEDGEMAP_MODE; const expectedResult = KNOWLEDGEMAP_MODE; - const result = reducer(initialState, initializeStore({ is_streamgraph: false })); + const result = chartType( + initialState, + initializeStore({ is_streamgraph: false }), + ); expect(result).toEqual(expectedResult); }); @@ -30,7 +33,10 @@ describe("chartType state", () => { const initialState = KNOWLEDGEMAP_MODE; const expectedResult = STREAMGRAPH_MODE; - const result = reducer(initialState, initializeStore({ is_streamgraph: true })); + const result = chartType( + initialState, + initializeStore({ visualization_type: STREAMGRAPH_MODE }), + ); expect(result).toEqual(expectedResult); }); @@ -38,7 +44,7 @@ describe("chartType state", () => { it("should not change the state if the action is canceled", () => { const INITIAL_STATE = { some_state: 1 }; - const result = reducer(INITIAL_STATE, { canceled: true }); + const result = chartType(INITIAL_STATE, { canceled: true }); expect(result).toEqual(INITIAL_STATE); }); diff --git a/vis/test/store/data.test.js b/vis/test/store/data.test.js index 37168037c..c7a44c30a 100644 --- a/vis/test/store/data.test.js +++ b/vis/test/store/data.test.js @@ -1,5 +1,7 @@ import { describe, expect, it } from "vitest"; +import { STREAMGRAPH_MODE } from "@/js/reducers/chartType"; + import { initializeStore, updateDimensions } from "../../js/actions"; import reducer from "../../js/reducers/data"; @@ -45,7 +47,7 @@ describe("data state", () => { const result = reducer( { list: [], options: {}, size: null }, initializeStore( - { is_streamgraph: true }, + { visualization_type: STREAMGRAPH_MODE }, {}, [], [], diff --git a/vis/test/store/initialize.test.js b/vis/test/store/initialize.test.js index 5203f6d45..b5c58cbaa 100644 --- a/vis/test/store/initialize.test.js +++ b/vis/test/store/initialize.test.js @@ -1,13 +1,14 @@ -import { expect, describe, it } from 'vitest'; +import { describe, expect, it } from "vitest"; -import { initializeStore } from "../../js/actions"; +import { STREAMGRAPH_MODE } from "@/js/reducers/chartType"; +import { initializeStore } from "../../js/actions"; +import contextLineReducer from "../../js/reducers/contextLine"; import headingReducer from "../../js/reducers/heading"; +import listReducer from "../../js/reducers/list"; import localizationReducer from "../../js/reducers/localization"; import queryReducer from "../../js/reducers/query"; -import contextLineReducer from "../../js/reducers/contextLine"; import serviceReducer from "../../js/reducers/service"; -import listReducer from "../../js/reducers/list"; import timespanReducer from "../../js/reducers/timespan"; const setup = (overrideConfig = {}, overrideContext = {}) => { @@ -60,7 +61,7 @@ const setup = (overrideConfig = {}, overrideContext = {}) => { }, service: undefined, }, - overrideConfig + overrideConfig, ); const contextObject = Object.assign( @@ -98,7 +99,7 @@ const setup = (overrideConfig = {}, overrideContext = {}) => { share_oa: 1, last_update: undefined, }, - overrideContext + overrideContext, ); return { configObject, contextObject }; @@ -115,7 +116,7 @@ describe("config and context state", () => { }; expect(initializeStore(configObject, contextObject)).toEqual( - expectedAction + expectedAction, ); }); }); @@ -155,8 +156,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toEqual(EXPECTED_RESULT); @@ -178,7 +179,7 @@ describe("config and context state", () => { {}, { params: null, - } + }, ); const result = headingReducer( @@ -192,8 +193,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toEqual(EXPECTED_RESULT); @@ -226,8 +227,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toEqual(EXPECTED_RESULT); @@ -262,8 +263,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toEqual(EXPECTED_RESULT); @@ -283,7 +284,7 @@ describe("config and context state", () => { const { configObject, contextObject } = setup({ is_authorview: true, - is_streamgraph: true, + visualization_type: STREAMGRAPH_MODE, }); const result = headingReducer( @@ -297,8 +298,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toEqual(EXPECTED_RESULT); @@ -332,8 +333,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toEqual(EXPECTED_RESULT); @@ -353,7 +354,7 @@ describe("config and context state", () => { const { configObject, contextObject } = setup({ is_authorview: false, - is_streamgraph: true, + visualization_type: STREAMGRAPH_MODE, }); const result = headingReducer( @@ -367,8 +368,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toEqual(EXPECTED_RESULT); @@ -426,8 +427,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result.text).toEqual(EXPECTED_RESULT); @@ -450,8 +451,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result.text).toEqual(EXPECTED_RESULT); @@ -463,7 +464,7 @@ describe("config and context state", () => { {}, { query: `"some phrase" cool`, - } + }, ); const EXPECTED_RESULT = ["some phrase", "cool"]; @@ -479,8 +480,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result.parsedTerms).toEqual(EXPECTED_RESULT); @@ -522,7 +523,7 @@ describe("config and context state", () => { from: FROM, to: TO, }, - } + }, ); const result = timespanReducer( @@ -536,8 +537,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toEqual("11 Aug 2019 - 12 Aug 2020"); @@ -558,7 +559,7 @@ describe("config and context state", () => { from: FROM, to: TO, }, - } + }, ); const result = timespanReducer( @@ -572,8 +573,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toEqual("Until 12 Aug 2020"); @@ -594,7 +595,7 @@ describe("config and context state", () => { from: FROM, to: TO, }, - } + }, ); const result = timespanReducer( @@ -608,8 +609,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toEqual("Until 2019"); @@ -630,7 +631,7 @@ describe("config and context state", () => { from: FROM, to: TO, }, - } + }, ); const result = timespanReducer( @@ -644,8 +645,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toEqual(null); @@ -667,7 +668,7 @@ describe("config and context state", () => { from: FROM, to: TO, }, - } + }, ); const result = timespanReducer( @@ -681,8 +682,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toEqual(`2019 - ${TODAY.getFullYear()}`); @@ -697,7 +698,7 @@ describe("config and context state", () => { const { configObject, contextObject } = setup( { service: SERVICE_NAME, - is_streamgraph: true, + visualization_type: STREAMGRAPH_MODE, }, { params: { @@ -705,7 +706,7 @@ describe("config and context state", () => { to: TO, sorting: "most-recent", }, - } + }, ); const result = timespanReducer( @@ -719,8 +720,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toEqual("Until 2019"); @@ -744,7 +745,7 @@ describe("config and context state", () => { }, { params: {}, - } + }, ); const result = contextLineReducer( @@ -758,8 +759,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("show", true); @@ -773,7 +774,7 @@ describe("config and context state", () => { }, { params: {}, - } + }, ); const result = contextLineReducer( @@ -787,8 +788,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("show", false); @@ -802,7 +803,7 @@ describe("config and context state", () => { }, { params: undefined, - } + }, ); const result = contextLineReducer( @@ -816,8 +817,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("show", false); @@ -842,8 +843,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("articlesCount", FAKE_DATA.length); @@ -865,7 +866,7 @@ describe("config and context state", () => { params: { sorting: MODIFIER, }, - } + }, ); const result = contextLineReducer( @@ -879,8 +880,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("modifier", MODIFIER); @@ -902,7 +903,7 @@ describe("config and context state", () => { params: { sorting: MODIFIER, }, - } + }, ); const result = contextLineReducer( @@ -916,8 +917,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("modifier", MODIFIER); @@ -937,7 +938,7 @@ describe("config and context state", () => { sorting: MODIFIER, }, num_documents: 99, - } + }, ); const result = contextLineReducer( @@ -951,8 +952,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("modifier", EXPECTED_MODIFIER); @@ -982,8 +983,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("openAccessCount", FAKE_DATA.length); @@ -1001,7 +1002,7 @@ describe("config and context state", () => { }, { share_oa: COUNT, - } + }, ); const result = contextLineReducer( @@ -1015,8 +1016,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("openAccessCount", EXPECTED_VALUE); @@ -1037,7 +1038,7 @@ describe("config and context state", () => { living_dates: "1620-1699", image_link: "http://link.com/1234", }, - } + }, ); const result = contextLineReducer( @@ -1051,8 +1052,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("showAuthor", EXPECTED_VALUE); @@ -1147,7 +1148,7 @@ describe("config and context state", () => { living_dates: LIVING_DATES, image_link: IMAGE_LINK, }, - } + }, ); const result = contextLineReducer( @@ -1161,8 +1162,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("author", EXPECTED_VALUE); @@ -1180,7 +1181,7 @@ describe("config and context state", () => { {}, { params: undefined, - } + }, ); const result = contextLineReducer( @@ -1194,8 +1195,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("author", EXPECTED_VALUE); @@ -1229,7 +1230,7 @@ describe("config and context state", () => { params: { document_types: [121], }, - } + }, ); const result = contextLineReducer( @@ -1243,8 +1244,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("documentTypes", [EXPECTED_VALUE]); @@ -1289,7 +1290,7 @@ describe("config and context state", () => { params: { document_types: [82, 69, 121], }, - } + }, ); const result = contextLineReducer( @@ -1303,8 +1304,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("documentTypes", EXPECTED_VALUE); @@ -1338,7 +1339,7 @@ describe("config and context state", () => { params: { include_content_type: [121], }, - } + }, ); const result = contextLineReducer( @@ -1352,8 +1353,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("documentTypes", [EXPECTED_VALUE]); @@ -1387,7 +1388,7 @@ describe("config and context state", () => { params: { article_types: [121], }, - } + }, ); const result = contextLineReducer( @@ -1401,8 +1402,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("documentTypes", [EXPECTED_VALUE]); @@ -1429,7 +1430,7 @@ describe("config and context state", () => { }, { params: {}, - } + }, ); const result = contextLineReducer( @@ -1443,8 +1444,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("documentTypes", EXPECTED_VALUE); @@ -1466,7 +1467,7 @@ describe("config and context state", () => { params: { article_types: JSON.parse(REAL_CONTEXT_ARTICLE_TYPES), }, - } + }, ); const result = contextLineReducer( @@ -1480,8 +1481,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("documentTypes", EXPECTED_VALUE); @@ -1489,13 +1490,15 @@ describe("config and context state", () => { it("should load correct data source from service_name", () => { const SERVICE_NAME = "pubmed"; - const EXPECTED_VALUE = 'PubMed'; + const EXPECTED_VALUE = "PubMed"; const initialState = {}; - const { configObject, contextObject } = setup({ - }, { - service: SERVICE_NAME, - }); + const { configObject, contextObject } = setup( + {}, + { + service: SERVICE_NAME, + }, + ); const result = contextLineReducer( initialState, @@ -1508,8 +1511,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("dataSource", EXPECTED_VALUE); @@ -1531,7 +1534,7 @@ describe("config and context state", () => { }, { service: SERVICE, - } + }, ); const result = contextLineReducer( @@ -1545,8 +1548,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("dataSource", EXPECTED_VALUE); @@ -1573,8 +1576,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("paperCount", FAKE_DATA.length); @@ -1600,8 +1603,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("paperCount", EXPECTED_VALUE); @@ -1628,8 +1631,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("datasetCount", FAKE_DATA.length); @@ -1655,8 +1658,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("datasetCount", EXPECTED_VALUE); @@ -1676,7 +1679,7 @@ describe("config and context state", () => { start_date: START_DATE, end_date: END_DATE, }, - } + }, ); const result = contextLineReducer( @@ -1690,8 +1693,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("projectRuntime", "2009–2012"); @@ -1711,7 +1714,7 @@ describe("config and context state", () => { start_date: START_DATE, end_date: END_DATE, }, - } + }, ); const result = contextLineReducer( @@ -1725,8 +1728,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("projectRuntime", null); @@ -1746,7 +1749,7 @@ describe("config and context state", () => { start_date: START_DATE, end_date: END_DATE, }, - } + }, ); const result = contextLineReducer( @@ -1760,8 +1763,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("projectRuntime", null); @@ -1788,7 +1791,7 @@ describe("config and context state", () => { params: { lang_id: LANG_ID, }, - } + }, ); const result = contextLineReducer( @@ -1802,13 +1805,13 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty( "legacySearchLanguage", - "Language: čeština (Czech) " + "Language: čeština (Czech) ", ); }); @@ -1833,7 +1836,7 @@ describe("config and context state", () => { params: { lang_id: LANG_ID, }, - } + }, ); const result = contextLineReducer( @@ -1847,8 +1850,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("legacySearchLanguage", null); @@ -1864,7 +1867,7 @@ describe("config and context state", () => { }, { last_update: LAST_UPDATED, - } + }, ); const result = contextLineReducer( @@ -1878,8 +1881,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("timestamp", LAST_UPDATED); @@ -1898,7 +1901,7 @@ describe("config and context state", () => { params: { min_descsize: MIN_DESCSIZE, }, - } + }, ); const result = contextLineReducer( @@ -1912,8 +1915,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("metadataQuality", EXPECTED_QUALITY); @@ -1932,7 +1935,7 @@ describe("config and context state", () => { params: { min_descsize: MIN_DESCSIZE, }, - } + }, ); const result = contextLineReducer( @@ -1946,8 +1949,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("metadataQuality", EXPECTED_QUALITY); @@ -1966,7 +1969,7 @@ describe("config and context state", () => { params: { min_descsize: MIN_DESCSIZE, }, - } + }, ); const result = contextLineReducer( @@ -1980,8 +1983,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("metadataQuality", EXPECTED_QUALITY); @@ -2000,7 +2003,7 @@ describe("config and context state", () => { params: { min_descsize: MIN_DESCSIZE, }, - } + }, ); const result = contextLineReducer( @@ -2014,8 +2017,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("metadataQuality", EXPECTED_QUALITY); @@ -2034,7 +2037,7 @@ describe("config and context state", () => { params: { min_descsize: MIN_DESCSIZE, }, - } + }, ); const result = contextLineReducer( @@ -2048,8 +2051,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("metadataQuality", EXPECTED_QUALITY); @@ -2068,7 +2071,7 @@ describe("config and context state", () => { params: { min_descsize: MIN_DESCSIZE, }, - } + }, ); const result = contextLineReducer( @@ -2082,8 +2085,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("metadataQuality", EXPECTED_QUALITY); @@ -2107,7 +2110,7 @@ describe("config and context state", () => { params: { language: LANG_ID, }, - } + }, ); const result = contextLineReducer( @@ -2121,8 +2124,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("searchLanguage", LANG_ID); @@ -2147,7 +2150,7 @@ describe("config and context state", () => { {}, { service: SERVICE, - } + }, ); const result = serviceReducer( @@ -2161,8 +2164,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toEqual(EXPECTED_SERVICE); @@ -2176,7 +2179,7 @@ describe("config and context state", () => { {}, { service: SERVICE, - } + }, ); const result = serviceReducer( @@ -2190,8 +2193,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toEqual(SERVICE); @@ -2227,8 +2230,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("show", SHOW_LIST); @@ -2252,8 +2255,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("showFilter", SHOW_FILTER); @@ -2277,8 +2280,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("filterOptions", FILTER_OPTIONS); @@ -2303,8 +2306,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("sortOptions", SORT_OPTIONS); @@ -2331,8 +2334,8 @@ describe("config and context state", () => { null, null, 500, - {} - ) + {}, + ), ); expect(result).toHaveProperty("sortValue", INITIAL_SORT); From 345225d32cd5c0b1a38002b3ea5f2e2248d62828 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Mon, 17 Nov 2025 14:56:23 +0100 Subject: [PATCH 138/149] bugfix: rendering of labels boxes --- vis/js/components/Streamgraph.tsx | 58 +++++++++++++++---------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/vis/js/components/Streamgraph.tsx b/vis/js/components/Streamgraph.tsx index ed01917ef..a7aa85a4b 100644 --- a/vis/js/components/Streamgraph.tsx +++ b/vis/js/components/Streamgraph.tsx @@ -1,32 +1,29 @@ // @ts-nocheck -import React from "react"; -import { connect } from "react-redux"; - -import StreamgraphChart from "../templates/StreamgraphChart"; - // importing this for the linter import d3 from "d3"; import $ from "jquery"; +import React from "react"; +import { connect } from "react-redux"; +import { zoomIn, zoomOut } from "../actions"; +import StreamgraphChart from "../templates/StreamgraphChart"; import { getLabelPosition, recalculateOverlappingLabels, setTM, } from "../utils/streamgraph"; import { + AXIS_PADDING, CHART_MARGIN, COLOR_RECT_MARGIN_RIGHT, COLOR_RECT_WIDTH, - MAX_TICKS_X, - AXIS_PADDING, LABEL_BORDER_WIDTH, LABEL_ROUND_FACTOR, LINE_HELPER_MARGIN, + MAX_TICKS_X, TOOLTIP_OFFSET, } from "../utils/streamgraph"; -import { zoomIn, zoomOut } from "../actions"; - /** * Class representing the streamgraph visualization. * @@ -72,7 +69,7 @@ class Streamgraph extends React.Component { const streams = this.props.streams; const streamEntries = streams.reduce( (l, stream) => [...l, ...stream.values], - [] + [], ); xScale.domain(d3.extent(streamEntries, (d) => d.date)); @@ -182,7 +179,7 @@ class Streamgraph extends React.Component { container .append("g") .attr("class", "x axis") - .attr("transform", "translate(0," + height + ")") + .attr("transform", `translate(0,${height})`) .call(xAxis); container.append("g").attr("class", "y axis").call(yAxis.orient("left")); @@ -201,7 +198,7 @@ class Streamgraph extends React.Component { .attr("text-anchor", "middle") .attr( "transform", - "translate(" + AXIS_PADDING.left + "," + height / 2 + ")rotate(-90)" + `translate(${AXIS_PADDING.left},${height / 2})rotate(-90)`, ) .text(this.props.localization.stream_doc_num); } @@ -222,7 +219,9 @@ class Streamgraph extends React.Component { this.moveOverlappingLabels(container); // finally render the white boxes - this.renderLabelsBoxes(container, xScale); + requestAnimationFrame(() => { + this.renderLabelsBoxes(container, xScale); + }); } /** @@ -268,14 +267,14 @@ class Streamgraph extends React.Component { labels.attr("transform", function (d) { const position = getLabelPosition(this, d, xScale, yScale, width); self.labelPositions.push(position); - return "translate(" + position.x + ", " + position.y + ")"; + return `translate(${position.x}, ${position.y})`; }); labels .on("mouseover", (label) => this.handleStreamMouseover(container, label)) .on("mouseout", () => this.handleStreamMouseout(container)) .on("mousemove", (label) => - this.handleStreamMousemove(d3.event, label, xScale) + this.handleStreamMousemove(d3.event, label, xScale), ); labels.on("click", (d) => this.props.onAreaClick(d)); @@ -289,6 +288,7 @@ class Streamgraph extends React.Component { */ renderLabelsBoxes(container, xScale) { const labels = container.selectAll(".label"); + labels[0].forEach((label) => { const bbox = label.getBBox(); const ctm = label.getCTM(); @@ -306,11 +306,11 @@ class Streamgraph extends React.Component { boxes .on("mouseover", () => - this.handleStreamMouseover(container, currentData) + this.handleStreamMouseover(container, currentData), ) .on("mouseout", () => this.handleStreamMouseout(container)) .on("mousemove", (d) => - this.handleStreamMousemove(d3.event, currentData, xScale) + this.handleStreamMousemove(d3.event, currentData, xScale), ); boxes.on("click", () => this.props.onAreaClick(currentData)); @@ -326,14 +326,14 @@ class Streamgraph extends React.Component { */ moveOverlappingLabels(container) { const repositionedLabels = recalculateOverlappingLabels( - this.labelPositions + this.labelPositions, ); container.selectAll("g.label").attr("transform", (d) => { const currentLabel = repositionedLabels.find((obj) => { return obj.key === d.key; }); - return "translate(" + currentLabel.x + "," + currentLabel.y + ")"; + return `translate(${currentLabel.x},${currentLabel.y})`; }); } @@ -348,7 +348,7 @@ class Streamgraph extends React.Component { if (previousTooltip.empty() || previousTooltip.classed("hidden")) { previousTooltip.remove(); - d3.select("#" + this.props.visTag) + d3.select(`#${this.props.visTag}`) .append("div") .attr("id", "tooltip") .attr("class", "tip hidden"); @@ -407,7 +407,7 @@ class Streamgraph extends React.Component { const moveLine = (event) => { const { x } = this.getRelativeMouseCoords(event); - lineHelper.style("left", x + LINE_HELPER_MARGIN + "px"); + lineHelper.style("left", `${x + LINE_HELPER_MARGIN}px`); }; container @@ -491,7 +491,7 @@ class Streamgraph extends React.Component { .reduce((a, b) => a + b, 0); const currentYearData = element.values.find( - (v) => streamYear === v.date.getFullYear() + (v) => streamYear === v.date.getFullYear(), ); if (currentYearData) { @@ -506,19 +506,19 @@ class Streamgraph extends React.Component { yearDocs: currentYearData.value, totalDocs, }, - this.props.localization - ) + this.props.localization, + ), ) .classed("hidden", false); const tooltipHeight = tooltipEl.node().getBoundingClientRect().height; const tooltipY = Math.max( window.scrollY, - y - tooltipHeight + TOOLTIP_OFFSET.top + y - tooltipHeight + TOOLTIP_OFFSET.top, ); tooltipEl - .style("top", tooltipY + "px") - .style("left", x + TOOLTIP_OFFSET.left + "px"); + .style("top", `${tooltipY}px`) + .style("left", `${x + TOOLTIP_OFFSET.left}px`); } } @@ -543,7 +543,7 @@ const mapStateToProps = (state) => ({ const mapDispatchToProps = (dispatch) => ({ onAreaClick: (stream) => { dispatch( - zoomIn({ title: stream.key, color: stream.color, docIds: stream.docIds }) + zoomIn({ title: stream.key, color: stream.color, docIds: stream.docIds }), ); }, outsideAreaClick: () => dispatch(zoomOut()), @@ -553,7 +553,7 @@ export default connect(mapStateToProps, mapDispatchToProps)(Streamgraph); const getTooltip = ( { year, color, keyword, yearDocs, totalDocs }, - localization + localization, ) => { return ` <div class="sg-tooltip"> From bebc073a08d81f00bd2b0b4469e58db69ee53058 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Tue, 18 Nov 2025 13:19:25 +0100 Subject: [PATCH 139/149] feat: abstract formatting --- server/workers/common/common/aquanavi/mapping.py | 2 +- vis/stylesheets/modules/list/_entry.scss | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/server/workers/common/common/aquanavi/mapping.py b/server/workers/common/common/aquanavi/mapping.py index e5cdd26bb..9a8d6c9a7 100644 --- a/server/workers/common/common/aquanavi/mapping.py +++ b/server/workers/common/common/aquanavi/mapping.py @@ -241,7 +241,7 @@ def get_not_available_message_and_increase_counter(name): if (count_of_not_available_parts == AMOUNT_OF_ALL_POSSIBLE_ENTRIES): return "" - return "; ".join(abstract_parts) + '.' + return "\n \n".join(abstract_parts) def get_keywords(row): """ diff --git a/vis/stylesheets/modules/list/_entry.scss b/vis/stylesheets/modules/list/_entry.scss index 6010bbe16..874d51428 100644 --- a/vis/stylesheets/modules/list/_entry.scss +++ b/vis/stylesheets/modules/list/_entry.scss @@ -228,6 +228,7 @@ padding-left: 0px; color: $list_abstract; font-weight: $fontweight400; + white-space: break-spaces; &.short { overflow: hidden; @@ -235,6 +236,7 @@ display: -webkit-box; -webkit-line-clamp: 3; line-clamp: 3; + white-space: unset; -webkit-box-orient: vertical; } From 4eb8059675adcf5cce7cad77fa516eadcef2e62e Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Tue, 18 Nov 2025 13:30:47 +0100 Subject: [PATCH 140/149] feat: selected Pin is closer that others --- vis/js/templates/Geomap/Pins/Pin/config.ts | 8 ++++++++ vis/js/templates/Geomap/Pins/Pin/index.tsx | 5 +++++ vis/js/templates/Geomap/Pins/Pin/types.ts | 7 +++++++ 3 files changed, 20 insertions(+) create mode 100644 vis/js/templates/Geomap/Pins/Pin/config.ts diff --git a/vis/js/templates/Geomap/Pins/Pin/config.ts b/vis/js/templates/Geomap/Pins/Pin/config.ts new file mode 100644 index 000000000..d58dfcb26 --- /dev/null +++ b/vis/js/templates/Geomap/Pins/Pin/config.ts @@ -0,0 +1,8 @@ +import { Config } from "./types"; + +export const CONFIG: Config = { + offsets: { + basic: 0, + selected: 1000, + }, +}; diff --git a/vis/js/templates/Geomap/Pins/Pin/index.tsx b/vis/js/templates/Geomap/Pins/Pin/index.tsx index 6ac6f2a17..46574dd05 100644 --- a/vis/js/templates/Geomap/Pins/Pin/index.tsx +++ b/vis/js/templates/Geomap/Pins/Pin/index.tsx @@ -3,9 +3,13 @@ import { Marker } from "react-leaflet"; import { getCoordinatesFromPaper } from "@/js/utils/coordinates"; +import { CONFIG } from "./config"; import { createPinIcon } from "./createPinIcon"; import { PinProps } from "./types"; +const { offsets } = CONFIG; +const { basic, selected } = offsets; + export const Pin: FC<PinProps> = memo(({ data, isActive, onClick }) => { const { east, north } = getCoordinatesFromPaper(data); @@ -19,6 +23,7 @@ export const Pin: FC<PinProps> = memo(({ data, isActive, onClick }) => { <Marker position={[north, east]} icon={createPinIcon(isActive)} + zIndexOffset={isActive ? selected : basic} eventHandlers={{ click: handleClick, }} diff --git a/vis/js/templates/Geomap/Pins/Pin/types.ts b/vis/js/templates/Geomap/Pins/Pin/types.ts index a7a136f70..a571e1b0d 100644 --- a/vis/js/templates/Geomap/Pins/Pin/types.ts +++ b/vis/js/templates/Geomap/Pins/Pin/types.ts @@ -5,3 +5,10 @@ export interface PinProps { isActive: boolean; onClick: (data: AllPossiblePapersType) => void; } + +export interface Config { + offsets: { + basic: number; + selected: number; + }; +} From aff1dd28fb345e6ff45f6f74c128edf02474e21b Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Tue, 18 Nov 2025 14:07:30 +0100 Subject: [PATCH 141/149] feat: unique more info modal for all geomaps --- vis/js/templates/modals/InfoModal.tsx | 50 ++++++++++++------- .../templates/modals/infomodal/BaseInfo.tsx | 20 ++++++-- .../subcomponents/StandardGeomapInfo.tsx | 48 ++++++++++++++++++ 3 files changed, 95 insertions(+), 23 deletions(-) create mode 100644 vis/js/templates/modals/infomodal/subcomponents/StandardGeomapInfo.tsx diff --git a/vis/js/templates/modals/InfoModal.tsx b/vis/js/templates/modals/InfoModal.tsx index d4f1bdaf1..4ba685113 100644 --- a/vis/js/templates/modals/InfoModal.tsx +++ b/vis/js/templates/modals/InfoModal.tsx @@ -1,34 +1,43 @@ // @ts-nocheck import React from "react"; -import { connect } from "react-redux"; import { Modal } from "react-bootstrap"; +import { connect } from "react-redux"; -import { closeInfoModal } from "../../actions"; -import { STREAMGRAPH_MODE } from "../../reducers/chartType"; +import { useVisualizationType } from "@/hooks"; +import { closeInfoModal } from "../../actions"; import BaseInfo from "./infomodal/BaseInfo"; import CovisInfo from "./infomodal/CovisInfo"; import DefaultKMInfo from "./infomodal/DefaultKMInfo"; import DefaultSGInfo from "./infomodal/DefaultSGInfo"; +import OpenAireInfo from "./infomodal/OpenAireInfo"; +import OrcidInfo from "./infomodal/OrcidInfo"; import PubMedInfo from "./infomodal/PubMedInfo"; import TripleKMInfo from "./infomodal/TripleKMInfo"; import TripleSGInfo from "./infomodal/TripleSGInfo"; import ViperInfo from "./infomodal/ViperInfo"; -import OpenAireInfo from "./infomodal/OpenAireInfo"; -import OrcidInfo from "./infomodal/OrcidInfo"; +const getInfoTemplate = ( + service: string, + isStreamgraph: boolean, + modalType: string, + isGeomap: boolean, +) => { + if (isGeomap) { + return BaseInfo; + } -const getInfoTemplate = (service: string, isStreamgraph: boolean, modalType: string) => { switch (service) { case "base": return BaseInfo; case "pubmed": return PubMedInfo; case "openaire": - if (modalType && modalType === 'openaire') { + if (modalType && modalType === "openaire") { return OpenAireInfo; - } else if (modalType && modalType === 'viper') { + } + if (modalType && modalType === "viper") { return ViperInfo; } return OpenAireInfo; @@ -45,19 +54,25 @@ const getInfoTemplate = (service: string, isStreamgraph: boolean, modalType: str } }; -const InfoModal = ({open, onClose, params, service, isStreamgraph, modalInfoType}) => { - const InfoTemplate = getInfoTemplate(service, isStreamgraph, modalInfoType); +const InfoModal = ({ open, onClose, params, service, modalInfoType }) => { + const { isStreamgraph, isGeoMap } = useVisualizationType(); + + const InfoTemplate = getInfoTemplate( + service, + isStreamgraph, + modalInfoType, + isGeoMap, + ); return ( - // html template starts here - <Modal id="info_modal" show={open} onHide={onClose} animation> - <InfoTemplate params={params} isStreamgraph={isStreamgraph}/> - </Modal> - // html template ends here + // html template starts here + <Modal id="info_modal" show={open} onHide={onClose} animation> + <InfoTemplate params={params} isStreamgraph={isStreamgraph} /> + </Modal> + // html template ends here ); }; - const mapStateToProps = (state) => ({ open: state.modals.openInfoModal, params: { @@ -68,9 +83,8 @@ const mapStateToProps = (state) => ({ author: state.author, }, service: state.isCovis ? "covis" : state.service, - isStreamgraph: state.chartType === STREAMGRAPH_MODE, // new parameter from config to render correct type of info modal window - modalInfoType: state.modalInfoType + modalInfoType: state.modalInfoType, }); const mapDispatchToProps = (dispatch) => ({ diff --git a/vis/js/templates/modals/infomodal/BaseInfo.tsx b/vis/js/templates/modals/infomodal/BaseInfo.tsx index 5db42e418..1b580cc8c 100644 --- a/vis/js/templates/modals/infomodal/BaseInfo.tsx +++ b/vis/js/templates/modals/infomodal/BaseInfo.tsx @@ -2,16 +2,27 @@ import React from "react"; -import baseLogo from "../../../../images/logos/base_logo.png"; +import { useVisualizationType } from "@/hooks"; +import baseLogo from "../../../../images/logos/base_logo.png"; +import { StandardGeomapInfo } from "./subcomponents/StandardGeomapInfo"; import StandardKMInfo from "./subcomponents/StandardKMInfo"; import StandardSGInfo from "./subcomponents/StandardSGInfo"; -const BaseInfo = ({ params, isStreamgraph }) => { - const MainTemplate = isStreamgraph ? StandardSGInfo : StandardKMInfo; +const BaseInfo = ({ params }) => { + const { isGeoMap, isStreamgraph } = useVisualizationType(); + + let MainTemplate = StandardKMInfo; + + if (isStreamgraph) { + MainTemplate = StandardSGInfo; + } + + if (isGeoMap) { + MainTemplate = StandardGeomapInfo; + } return ( - // html template starts here <MainTemplate serviceName="BASE" serviceDesc={ @@ -31,7 +42,6 @@ const BaseInfo = ({ params, isStreamgraph }) => { } params={params} /> - // html template ends here ); }; diff --git a/vis/js/templates/modals/infomodal/subcomponents/StandardGeomapInfo.tsx b/vis/js/templates/modals/infomodal/subcomponents/StandardGeomapInfo.tsx new file mode 100644 index 000000000..086bd445d --- /dev/null +++ b/vis/js/templates/modals/infomodal/subcomponents/StandardGeomapInfo.tsx @@ -0,0 +1,48 @@ +import { FC } from "react"; +import { Modal } from "react-bootstrap"; + +import { queryConcatenator } from "@/js/utils/data"; +import { unescapeHTML } from "@/js/utils/unescapeHTMLentities"; + +import AboutSoftware from "./AboutSoftware"; + +interface StandardGeomapInfoProps { + params: { + query: string; + customTitle: string; + q_advanced: string; + }; +} + +export const StandardGeomapInfo: FC<StandardGeomapInfoProps> = ({ params }) => { + const { query, customTitle, q_advanced: queryAdvanced } = params; + + const queryAfterConcatenate = queryConcatenator([query, queryAdvanced]); + const saveCustomTitle = customTitle && unescapeHTML(customTitle); + + return ( + <> + <Modal.Header closeButton> + <Modal.Title id="info-title">What's this?</Modal.Title> + </Modal.Header> + <Modal.Body id="info-body"> + {(!!saveCustomTitle || !!query || !!queryAdvanced) && ( + <p> + This geo map presents you with an overview of{" "} + <strong className="hs-strong"> + {saveCustomTitle ? saveCustomTitle : queryAfterConcatenate} + </strong> + </p> + )} + {!!saveCustomTitle && ( + <p> + This map has a custom title and was created using the following + query:{" "} + <strong className="hs-strong">{queryAfterConcatenate}</strong> + </p> + )} + <AboutSoftware /> + </Modal.Body> + </> + ); +}; From 52c8f77982a45a6aeeb3e3b80829bfd91f993498 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Tue, 18 Nov 2025 14:52:55 +0100 Subject: [PATCH 142/149] refactor: replace specific vis types with visualization word --- vis/js/i18n/localization.ts | 14 +++++++------- vis/js/templates/buttons/CitationButton.tsx | 5 ++++- vis/js/templates/buttons/EmailButton.tsx | 4 ++-- vis/js/templates/buttons/TwitterButton.tsx | 4 ++-- 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/vis/js/i18n/localization.ts b/vis/js/i18n/localization.ts index 6b3e59123..7929e1f17 100644 --- a/vis/js/i18n/localization.ts +++ b/vis/js/i18n/localization.ts @@ -202,11 +202,11 @@ export const localization: { pdf_not_loaded: "Sorry, we were not able to retrieve the PDF for this publication. You can get it directly from", pdf_not_loaded_linktext: "this website", - share_button_title: "Share this knowledge map", - share_button_title_sg: "Share this streamgraph", + share_button_title: "Share this visualization", + share_button_title_sg: "Share this visualization", embed_title: "embed visualization", - embed_button_title: "Embed this knowledge map on other websites", - embed_button_title_sg: "Embed this streamgraph on other websites", + embed_button_title: "Embed this visualization on other websites", + embed_button_title_sg: "Embed this visualization on other websites", embed_body_text: "You can use this code to embed the visualization on your own website or in a dashboard.", area_streamgraph: "Stream", @@ -219,8 +219,8 @@ export const localization: { lang_all: "All languages", cite: "Cite", filter_by_label: "show: ", - cite_title_km: "Cite this knowledge map", - cite_title_sg: "Cite this streamgraph", + cite_title_km: "Cite this visualization", + cite_title_sg: "Cite this visualization", citation_template: "Open Knowledge Maps (${year}). ${type} for research on ${query}. Retrieved from ${source} [${date}].", cite_vis_km: "Please cite this knowledge map as follows", @@ -312,7 +312,7 @@ export const localization: { "Keine Dokumente gefunden. Setzen Sie bitte Ihre Filtereinstellungen zurück.", cite: "Cite", cite_title_km: "Zitieren Sie diese Wissenskarte", - cite_title_sg: "Cite this streamgraph", + cite_title_sg: "Cite this visualization", citation_template: "Open Knowledge Maps (${year}). ${type} for research on ${query}. Retrieved from ${source} [${date}].", cite_vis_km: "Please cite this knowledge map as follows", diff --git a/vis/js/templates/buttons/CitationButton.tsx b/vis/js/templates/buttons/CitationButton.tsx index 0ed2704be..9710d0db0 100644 --- a/vis/js/templates/buttons/CitationButton.tsx +++ b/vis/js/templates/buttons/CitationButton.tsx @@ -8,7 +8,10 @@ import { useLocalizationContext } from "../../components/LocalizationProvider"; import { STREAMGRAPH_MODE } from "../../reducers/chartType"; import useMatomo from "../../utils/useMatomo"; -const CitationButton = ({ isStreamgraph, onClick }: { +const CitationButton = ({ + isStreamgraph, + onClick, +}: { isStreamgraph: boolean; onClick: () => void; }) => { diff --git a/vis/js/templates/buttons/EmailButton.tsx b/vis/js/templates/buttons/EmailButton.tsx index b5e1e32e2..f4ee6ae42 100644 --- a/vis/js/templates/buttons/EmailButton.tsx +++ b/vis/js/templates/buttons/EmailButton.tsx @@ -1,7 +1,7 @@ // @ts-nocheck import React from "react"; - import { Button } from "react-bootstrap"; + import useMatomo from "../../utils/useMatomo"; const EmailButton = () => { @@ -30,7 +30,7 @@ const EmailButton = () => { > <Button bsStyle="primary" - title="Share this knowledge map via email" + title="Share this visualization via email" onClick={handleClick} > <i className="fa fa-envelope"></i> diff --git a/vis/js/templates/buttons/TwitterButton.tsx b/vis/js/templates/buttons/TwitterButton.tsx index 9e14301ca..2d772130b 100644 --- a/vis/js/templates/buttons/TwitterButton.tsx +++ b/vis/js/templates/buttons/TwitterButton.tsx @@ -1,9 +1,9 @@ // @ts-nocheck import React from "react"; +import { Button } from "react-bootstrap"; import { connect } from "react-redux"; -import { Button } from "react-bootstrap"; import useMatomo from "../../utils/useMatomo"; const TwitterButton = ({ twitterHashtags }) => { @@ -29,7 +29,7 @@ const TwitterButton = ({ twitterHashtags }) => { > <Button bsStyle="primary" - title="Share this knowledge map via Twitter" + title="Share this visualization via Twitter" onClick={handleClick} > <i className="fab fa-twitter"></i> From 23118543bd4380399f0f8cb6c4f601e54e57cfd6 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Thu, 20 Nov 2025 14:05:49 +0100 Subject: [PATCH 143/149] feat: remove the Create a knowledge map button --- vis/js/templates/footers/CreateMapButton.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vis/js/templates/footers/CreateMapButton.tsx b/vis/js/templates/footers/CreateMapButton.tsx index d98541ed4..727d9e506 100644 --- a/vis/js/templates/footers/CreateMapButton.tsx +++ b/vis/js/templates/footers/CreateMapButton.tsx @@ -8,9 +8,9 @@ const getIsEmbed = (state: State) => state.misc.isEmbedded; export const CreateMapButton: FC = () => { const isEmbed = useSelector(getIsEmbed); - const { isGeoMap } = useVisualizationType(); + const { isGeoMap, isStreamgraph } = useVisualizationType(); - if (isEmbed || isGeoMap) { + if (isEmbed || isGeoMap || isStreamgraph) { return null; } From 1847cbf4f90c843afd92525995dc8902befb2e8f Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Wed, 10 Dec 2025 14:12:38 +0100 Subject: [PATCH 144/149] refactor: initial zoom level is low --- vis/js/templates/Geomap/config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vis/js/templates/Geomap/config.ts b/vis/js/templates/Geomap/config.ts index d796e3249..c9383eb5e 100644 --- a/vis/js/templates/Geomap/config.ts +++ b/vis/js/templates/Geomap/config.ts @@ -2,7 +2,7 @@ import { Config } from "./types"; export const CONFIG: Config = { center: [45.1, 4.1], - zoom: 4, + zoom: 2, maxZoom: 17, minZoom: 2, maxBounds: [ From 1938d7b035efc2f49de6dea41a8f6ce5e6883438 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Thu, 11 Dec 2025 10:41:44 +0100 Subject: [PATCH 145/149] feat: tests for geomap dataprocessing functions --- vis/js/utils/data.ts | 4 +- vis/test/utils/{data.test.js => data.test.ts} | 109 +++++++++++++++++- 2 files changed, 108 insertions(+), 5 deletions(-) rename vis/test/utils/{data.test.js => data.test.ts} (54%) diff --git a/vis/js/utils/data.ts b/vis/js/utils/data.ts index b0e80db6b..76585c686 100644 --- a/vis/js/utils/data.ts +++ b/vis/js/utils/data.ts @@ -627,11 +627,11 @@ export const parseGeographicalData = (data: AquanaviPaper) => { switch (formattedKey) { case "country": { - result[formattedKey] = formattedValue; + result[formattedKey] = formattedValue ? formattedValue : null; break; } case "continent": { - result[formattedKey] = formattedValue; + result[formattedKey] = formattedValue ? formattedValue : null; break; } case "east": { diff --git a/vis/test/utils/data.test.js b/vis/test/utils/data.test.ts similarity index 54% rename from vis/test/utils/data.test.js rename to vis/test/utils/data.test.ts index da055c622..bdcef99a8 100644 --- a/vis/test/utils/data.test.js +++ b/vis/test/utils/data.test.ts @@ -1,5 +1,4 @@ -import { expect, describe, it } from 'vitest'; - +import { expect, describe, it } from "vitest"; import { commentArrayValidator, @@ -8,9 +7,11 @@ import { getInternalMetric, getVisibleMetric, oaStateValidator, + parseGeographicalData, resultTypeSanitizer, stringArrayValidator, -} from "../../js/utils/data"; +} from "@/js/utils/data"; +import { AquanaviPaper } from "@/js/types"; describe("Data utility functions", () => { describe("date validator", () => { @@ -221,4 +222,106 @@ describe("Data utility functions", () => { expect(result).toEqual(0); }); }); + + describe("Geomap data processing functions", () => { + describe("Parse geographical data correctly", () => { + const createMockData = (coverageString: string): AquanaviPaper => { + const MOCK_DATA = { + coverage: coverageString, + } as AquanaviPaper; + + return MOCK_DATA; + }; + + describe("Country name", () => { + it("Return the name if it is presented in the string", () => { + const COUNTRY_NAME = "France"; + const COVERAGE_STRING_TO_PARSE = `country=${COUNTRY_NAME}; continent=Europe; east=-0.618181; north=44.776596; start=2010-07; end=2012-06`; + const MOCK_DATA = createMockData(COVERAGE_STRING_TO_PARSE); + + const result = parseGeographicalData(MOCK_DATA); + const { country } = result; + + expect(country).toBe(COUNTRY_NAME); + }); + + it("Return null instead of a name if it is not presented in the string", () => { + const COVERAGE_STRING_TO_PARSE = `country=; continent=Europe; east=-0.618181; north=44.776596; start=2010-07; end=2012-06`; + const MOCK_DATA = createMockData(COVERAGE_STRING_TO_PARSE); + + const result = parseGeographicalData(MOCK_DATA); + const { country } = result; + + expect(country).toBe(null); + }); + }); + + describe("Continent name", () => { + it("Return the name if it is presented in the string", () => { + const CONTINENT_NAME = "Europe"; + const COVERAGE_STRING_TO_PARSE = `country=France; continent=${CONTINENT_NAME}; east=-0.618181; north=44.776596; start=2010-07; end=2012-06`; + const MOCK_DATA = createMockData(COVERAGE_STRING_TO_PARSE); + + const result = parseGeographicalData(MOCK_DATA); + const { continent } = result; + + expect(continent).toBe(CONTINENT_NAME); + }); + + it("Return null instead of a name if it is not presented in the string", () => { + const COVERAGE_STRING_TO_PARSE = `country=France; continent=; east=-0.618181; north=44.776596; start=2010-07; end=2012-06`; + const MOCK_DATA = createMockData(COVERAGE_STRING_TO_PARSE); + + const result = parseGeographicalData(MOCK_DATA); + const { continent } = result; + + expect(continent).toBe(null); + }); + }); + + describe("Coordinates", () => { + it("Return east coordinates if they are presented in the string", () => { + const COORDINATES = "-0.618181"; + const COVERAGE_STRING_TO_PARSE = `country=France; continent=Europe; east=${COORDINATES}; north=44.776596; start=2010-07; end=2012-06`; + const MOCK_DATA = createMockData(COVERAGE_STRING_TO_PARSE); + + const result = parseGeographicalData(MOCK_DATA); + const { east } = result; + + expect(east).toBe(Number(COORDINATES)); + }); + + it("Return null instead of east coordinates if they are not presented in the string", () => { + const COVERAGE_STRING_TO_PARSE = `country=France; continent=Europe; east=; north=44.776596; start=2010-07; end=2012-06`; + const MOCK_DATA = createMockData(COVERAGE_STRING_TO_PARSE); + + const result = parseGeographicalData(MOCK_DATA); + const { east } = result; + + expect(east).toBe(null); + }); + + it("Return north coordinates if they are presented in the string", () => { + const COORDINATES = "44.776596"; + const COVERAGE_STRING_TO_PARSE = `country=France; continent=Europe; east=-0.618181; north=${COORDINATES}; start=2010-07; end=2012-06`; + const MOCK_DATA = createMockData(COVERAGE_STRING_TO_PARSE); + + const result = parseGeographicalData(MOCK_DATA); + const { north } = result; + + expect(north).toBe(Number(COORDINATES)); + }); + + it("Return null instead of north coordinates if they are not presented in the string", () => { + const COVERAGE_STRING_TO_PARSE = `country=France; continent=Europe; east=-0.618181; north=; start=2010-07; end=2012-06`; + const MOCK_DATA = createMockData(COVERAGE_STRING_TO_PARSE); + + const result = parseGeographicalData(MOCK_DATA); + const { north } = result; + + expect(north).toBe(null); + }); + }); + }); + }); }); From cd5029a5b4c121a89aa1bf08def14a58c3803859 Mon Sep 17 00:00:00 2001 From: andrei <andrei.shket@modsen-software.com> Date: Tue, 20 Jan 2026 09:35:39 +0100 Subject: [PATCH 146/149] refactor: remove test cases from geomap data --- server/workers/common/common/aquanavi/mapping.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/server/workers/common/common/aquanavi/mapping.py b/server/workers/common/common/aquanavi/mapping.py index 9a8d6c9a7..e804640b4 100644 --- a/server/workers/common/common/aquanavi/mapping.py +++ b/server/workers/common/common/aquanavi/mapping.py @@ -318,15 +318,12 @@ def load_and_prepare_dataframe(): DataFrame: Pandas DataFrame with information from CSVs. """ csv_real_path = Path(CSV_PATH_WITH_REAL_DATA) - csv_test_path = Path(CSV_PATH_WITH_TEST_DATA) check_that_csv_file_exists(csv_real_path) - check_that_csv_file_exists(csv_test_path) df_real = pd.read_csv(csv_real_path).fillna("") - df_test = pd.read_csv(csv_test_path).fillna("") - df = pd.concat([df_real, df_test], ignore_index=True) + df = pd.concat([df_real], ignore_index=True) check_that_required_columns_exists(df, CSV_PATH_WITH_REAL_DATA) return df From f5aae01b06ed339ddfb32e467c6fdf4de5b68f82 Mon Sep 17 00:00:00 2001 From: Christopher Kittel <web@christopherkittel.eu> Date: Wed, 21 Jan 2026 11:21:42 +0100 Subject: [PATCH 147/149] Update searchAQUANAVI.php mock params --- server/services/searchAQUANAVI.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/services/searchAQUANAVI.php b/server/services/searchAQUANAVI.php index 6fbaa6d4e..2af30168b 100644 --- a/server/services/searchAQUANAVI.php +++ b/server/services/searchAQUANAVI.php @@ -16,7 +16,7 @@ $post_params["lang_id"] = ["all-lang"]; $post_params["vis_type"] = "geomap"; $post_params["from"] = "1665-01-01"; -$post_params["to"] = "2025-11-05"; +$post_params["to"] = "2026-01-21"; $post_params["document_types"] = ["F"]; $post_params["sorting"] = "most-relevant"; $post_params["time_range"] = "user-defined"; @@ -31,4 +31,4 @@ $result = search("aquanavi", $query, $post_params, $params_array, false, true, null, $precomputed_id, false); echo $result -?> \ No newline at end of file +?> From 6ef14abba30fe62d84adacc3122876ff8feb3f36 Mon Sep 17 00:00:00 2001 From: Christopher Kittel <web@christopherkittel.eu> Date: Wed, 21 Jan 2026 11:23:25 +0100 Subject: [PATCH 148/149] Update searchAQUANAVI.php search params --- server/services/searchAQUANAVI.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/services/searchAQUANAVI.php b/server/services/searchAQUANAVI.php index 2af30168b..09382bc60 100644 --- a/server/services/searchAQUANAVI.php +++ b/server/services/searchAQUANAVI.php @@ -29,6 +29,6 @@ $params_array[] = "custom_title"; } -$result = search("aquanavi", $query, $post_params, $params_array, false, true, null, $precomputed_id, false); +$result = search("aquanavi", $query, $post_params, $params_array, true, true, null, $precomputed_id, false); echo $result ?> From a440fb6207222a2e0b801edd2b775c86f5b20fdc Mon Sep 17 00:00:00 2001 From: Christopher Kittel <web@christopherkittel.eu> Date: Tue, 27 Jan 2026 17:22:48 +0100 Subject: [PATCH 149/149] hotfix for crossref dependency --- server/preprocessing/other-scripts/openaire.R | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/server/preprocessing/other-scripts/openaire.R b/server/preprocessing/other-scripts/openaire.R index 46cb494f3..c8a66d014 100644 --- a/server/preprocessing/other-scripts/openaire.R +++ b/server/preprocessing/other-scripts/openaire.R @@ -52,7 +52,11 @@ get_papers <- function(query, params) { funder = funder, format = 'xml') pubs_metadata <- parse_response(response) - pubs_metadata <- fill_dois(pubs_metadata) + # FYI: The deactivation of the fill_dois() function is a hotfix + # to enable creation of OpenAIRE project maps + # TODO: root cause analysis of failure mode + # TODO: refactor/replace/remove the function, decision pending + #pubs_metadata <- fill_dois(pubs_metadata) }, error = function(err){ olog$warn(paste0("vis_id:", .GlobalEnv$VIS_ID, "publications: ", err))