Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tracking georeferenced by and date georeferenced #1705

Closed
anna-chinn opened this issue Sep 21, 2018 · 90 comments
Closed

Tracking georeferenced by and date georeferenced #1705

anna-chinn opened this issue Sep 21, 2018 · 90 comments
Assignees
Labels
Function-Locality/Event/Georeferencing NeedsDocumentation When the issue is resolved in Arctos repository, this should be moved to the Documentation-wiki repo
Milestone

Comments

@anna-chinn
Copy link

anna-chinn commented Sep 21, 2018

Issue Documentation is http://handbook.arctosdb.org/documentation/locality.html

Is your feature request related to a problem? Please describe.
We would like to track who is georeferencing localities associated with our specimens and when these localities were georeferenced. Right now the only way to do this is by using Verified By and Date Verified in Specimen Event, or by using free text in Locality Remarks.

Describe the solution you'd like
Georeferenced By and Date Georeferenced fields in the Locality table. They could be optional fields that have a "Me, Today" button (like in the Specimen Event Verification Status section) that would populate the fields with the operator's name and that day's date.

This could also help us keep tabs on whether the georeference was recorded by a collector, or was retroactively assigned as part of a curatorial georeferencing project. Might pair well with proposed verbatim coordinates fields in #1486.

Describe alternatives you've considered
At the moment, we are tracking this using Verified By and Date Verified under Specimen Event. This seems wrong given that our georeferencing process only involves interpreting legacy data on Arctos and is entirely separate from processes of verifying the validity of collecting data on a specimen by specimen basis.
For other institutions, these processes might be more interdependent. In that case, I imagine that Verified By and Georeferenced By would be the same agent. That said, it feels to me like georeferencing a specific locality is different enough from verifying an event that it deserves separate attention.

We are also trying to capture the who and when of georeferencing in the Locality Remarks field, but it would be nice to have something more controlled.

@dustymc
Copy link
Contributor

dustymc commented Sep 21, 2018

The "assigned..." fields in specimen event exist for this purpose. Verified... are a different sort of thing.

@anna-chinn
Copy link
Author

Gotcha, that definitely helps.
"Assigned" fields are camouflaged as Event Determiner and Date Determined on the user interface, right?

http://handbook.arctosdb.org/documentation/specimen-event.html

Event Determiner: refers to the agent who asserts that the specimen has Event Type relationship to a collecting event. This person has determined or verified coordinates and error, dates, higher geography, and everything else in the“place and time stack.”

To me, the documentation is saying that "assigned" fields refer to asserted relationships between a specimen and the place/time stack, rather than an asserted relationship between the coordinates and a given locality. I think it would still be nice to record the latter.

While Georeferenced By and Event Determiner might at many times be the same person, if, for example, I wanted to assign my specimen's collecting event to a locality that had been georeferenced by someone else, Georeferenced By and Event Determiner are different agents.

@dustymc
Copy link
Contributor

dustymc commented Sep 21, 2018

camouflaged

Yea, probably - it's always a tradeoff between clarity and screen real estate and I'm always up for better ideas.

There's a lot more discussion about the locality model in #752

@DerekSikes
Copy link

DerekSikes commented Sep 21, 2018 via email

@Jegelewicz
Copy link
Member

Below the locality geocoordinates are metadata fields like "Datum" - the person who fills those fields out and assigned the geocoordinates to that locality should be listed as part of that metadata (along with the date).

Agree. This is driving me crazy right now as I attempt to bulkload a bunch of stuff that was georeferenced after the fact by someone other than the person who I consider to be the Specimen Event Assigner (the collector). If I could just put the georeferencer's name in a dedicated field in the locality, everything would be so much easier. Right now I am struggling with how to get the original information in, then go back and add the georeference without creating somewhat duplicate localities (one with and one without coordinates).

@Jegelewicz
Copy link
Member

It would also be nice to have a field for Georeference remarks. Some of my georeferencers made detailed notes about how they converted from a description to coordinates. These could be very useful for anyone fact-checking...

@dustymc
Copy link
Contributor

dustymc commented Sep 21, 2018

I don't really have objections to going to a less-normalized model, but we should all be aware of the functional implications of denormalization. Given a GPS firmly affixed to the planet, you and me reading it at the same time is two localities, you reading it now and {something outside the precision of your temporal data} later is two localities, remarks "Remark" and "remarks" are two localities, etc. That makes it that much harder for users to find specimens, and it means that much more work when a bunch of specimens from what should be the same place are scattered across many localities. I'm happy to talk about locality models that better do whatever ya'll are trying to do if that seems like an acceptable tradeoff.

If we're adding "georeference..." stuff, we should also add whatever the opposite is called. One of the fatal flaws of the old model was the structural assumption that spatial data comes only in string form, and coordinates can only be derived from that. That is not true and cannot be reintroduced in any form.

You are not limited to "the" event assigner. Enter the data as you got them and attribute that to whoever made them, add another determination for the georeference and attribute that to the georeferencer. In many cases georeferences are wrong and tossing out the original data (or mixing it up with derived data) permanently reduces the usability of the specimen. I don't think any of us would throw out "50 people looked at this thing using 50 techniques and they all agree it's {taxon}" data - why throw out the same sort of information in spatial data?

@Jegelewicz
Copy link
Member

Yeah, I hear you and that is what I did for a bunch of stuff previously. It makes sense, it's just so much work! Which is why it's probably better.... I'll suck it up.

@dustymc dustymc added this to the Need More Information milestone Sep 27, 2018
@Jegelewicz
Copy link
Member

From #729

Dusty,

I was just browsing this
http://www.gbif.org/newsroom/news/new-darwin-core-spreadsheet-templates

and noticed these DwC terms:

http://rs.tdwg.org/dwc/terms/#georeferencedBy
http://rs.tdwg.org/dwc/terms/#georeferencedDate

which I really wonder, again, why we aren't using in Arctos?

I envision a system that tracks georeferences for a place name the same way
we track sci-name identifications for a specimen. Who, when, how, what, and
a history of those as new ones are added over time to the same record. (who
did the georeference, when did they do it, how did they do it, and what is
the georeference)

We record how the georeference was done (protocol) and what it is
(obviously) but not who did it or when.

I've explored your test archive locality table - nice functionality!!! It
records the userID of who made edits to the record.... but we still seem to
missing a field to record who did the georeference and when.

Anyhow, great addition to a shared locality table...

-Derek

I think this is something that we need to continue discussing.

@dustymc
Copy link
Contributor

dustymc commented Oct 11, 2018

Not having a solid model is blocking #1357, so I'm elevating priority.

Points for consideration:

  • data structure matters; denormalizing this would affect what it means to eg, fix an error in all specimens "from a locality" (which may be thousands of localities, depending on how the data are organized and where they came from and all that jazz). This is not necessarily a reason to avoid denormalization, but it is an inevitable consequence of denormalizing.
  • we do more than pull shapes from strings (what georeferencedBy records); we also pull strings from shapes, and add error to coordinates (I think "traditionally" considered georeferencing, although it's a wildly different activity than pulling shapes from strings), and probably some other stuff.
  • The model supports a full history of complete "place" determinations. I'm not sure what's being requested with that. If it's multiple georeferences as children of a locality (basically "the old model") then I think we need to lock localities with georeferences. Georeferencing, then changing something (geography, spec locality, etc.), then georeferencing the new thing was a common cause of confusion, and I'm not thrilled with the idea of circling back around to something that caused so many problems.

@anna-chinn
Copy link
Author

we do more than pull shapes from strings (what georeferencedBy records)

Is there a DWC term for a more general geospatial coordinate determiner? Being able to associate an agent to coordinates for a locality--no matter if the coordinates are native to that locality or derived from a string--would be useful in vetting data quality. Being able to record whether or not coordinates are derived would also add curatorial value. Maybe this is just a matter of making the locality determination history more explicit on the locality editing page? For example, display a "last edited by" field and have it searchable using Find Locality.

@dustymc
Copy link
Contributor

dustymc commented Oct 12, 2018

more general geospatial coordinate determiner

Not that I'm aware of

record whether or not coordinates are derived would also add curatorial value

 GEOREFERENCE_SOURCE							    VARCHAR2(4000)
 GEOREFERENCE_PROTOCOL							    VARCHAR2(255)

once upon a time GEOREFERENCE_SOURCE was things like "GPS (download)" and "collector notes" but it became free-text (so not searchable) somewhere along the way.

We could probably do more with http://arctos.database.museum/info/ctDocumentation.cfm?table=CTGEOREFERENCE_PROTOCOL.

last edited by

From the perspective of specimens, the specimen event determiner asserts that the locality and the specimen have something to do with each other in both models, and that's the place where I'd consider people in the context of data quality - although I'm obviously not understanding SOMETHING.

@DerekSikes
Copy link

DerekSikes commented Oct 12, 2018 via email

@dustymc
Copy link
Contributor

dustymc commented Oct 12, 2018

@DerekSikes the attachment didn't make it.

You've described what MaNIS (and a bunch of later initiatives) do/did. Those data have been repatriated as full localities with the georeferencer as specimen-event determiner.

http://arctos.database.museum/guid/UAMb:Herb:20997 currently looks like this:

screen shot 2018-10-12 at 7 51 24 am

The georeference (from a TCN) is off by a continent or two and has a lichen hovering over saltwater, but note how they provided the georeference, the string that was georeferenced (pulled from OCR, I think), elevation, etc. - the model can support a lot more than simply adding coordinates to strings.

http://arctos.database.museum/guid/CHAS:Bird:15397 (georefed by Ornis, I think) is a little closer to how that's supposed to work, and came with a determiner.

Locality (nick)name exists in part to make pre-creating localities easy - I don't foresee any changes there no matter what model we ultimately end up in.

My concerns in this are that I have to explain it to new collections, and perhaps clean up their data. Cleaning up any data is likely to be more work under a denormalized model just because there will be more rows, but I can roll with that. I'm struggling to see any functional benefits to denormalizing; I'm not opposed to the idea, but I do need to better understand what we're trying to do here before I can design a model that does whatever ya'll are trying to do, write interfaces to it, or explain it to anyone.

@AdrienneRaniszewski - I think you've probably spent more time chasing almost-duplicates (minor variations in date, jumping around between several members of an expedition as georeferencer, etc.) than anyone else - thoughts on this?

@DerekSikes
Copy link

DerekSikes commented Oct 12, 2018 via email

@Jegelewicz
Copy link
Member

Do we all agree that a georeference doesn't necessarily have to have anything to do with an or any event or specimen? I think this is where our disconnect is happening.

@campmlc
Copy link

campmlc commented Oct 12, 2018 via email

@dustymc
Copy link
Contributor

dustymc commented Oct 12, 2018

why does adding georeferencedby and georeferenced date denormalize?

Given a GPS firmly affixed to the planet, you and me reading it at the same time is two localities, you reading it now and {something outside the precision of your temporal data} later is two localities, remarks "Remark" and "remarks" are two localities, etc.

(And "temporal data" would be georeferenceDate - day-precision if we make it a DATE field, some flexibility if we go with ISO8601.)

It's basically a question of what a locality IS. I think it's a fact - the shape and strings complement each other and define something real, you can go there, etc. (Some of them aren't so factual - Bildesbucht probably isn't off the coast of Somalia - but still...).

What's being proposed would make localities determinations - we'd have to care WHY Bildesbucht maps off the coast of Somalia, and who says so, and when they say it. If you feed Bildesbucht to whatever broken script came up with those coordinates and it returns the same coordinates every day for a month, you've got 30 localities. When you notice the map, you'll need to fix all 30. If you and I do that simultaneously, we've got 60 localities to clean up.

In both cases there's a determination between the specimen and the locality stack (unless we do something drastic with specimen_events, which doesn't seem possible in the context of hosts/parasites, cultural data, etc.). Arctos is primarily a specimen database, so I think that's the important place - I want to know who says a specimen is from {PLACE}, {PLACE} itself just exists (or not, in which case I'd just not use it).

Our actual model is somewhere in the middle - GEOREFERENCE_SOURCE and GEOREFERENCE_PROTOCOL are there to get at "why" (maybe that lichen really was hovering out there, GPS coordinates were provided, and Bildesbucht is the erroneous data - that should be in source and protocol). Those affect whether you'd want to select that locality for another specimen or not, so I think that's a reasonable compromise. What I'm struggling with is how knowing that {AGENT} on {DATE} created those data would influence you choosing to (or not to) assign specimens to that locality.

@dustymc
Copy link
Contributor

dustymc commented Oct 12, 2018

georeference doesn't necessarily have to have anything to do with an or any event or specimen

#1490 makes the answer "sorta" - georeferences can be out of context (but that leads to polar bears "from Barrow" having the same error as house mice from Barrow), but localities which are out of context get merged and deleted. I think this change would involve giving up any idea that localities CAN be duplicates, so the answer would change if we go there.

Can't the georeferencing info be in a separate table that links to locality

That's the old model, and it was evil. We'd have dumped those lichen coordinates back in the original locality, which is not where they came from. And we'd have done it as the one accepted georeference, which would discard the only true data we have. That also reintroduces structural directionality - downloading GPS coordinates and adding string data to them doesn't fit in the model I'm imagining. That is, coordinates are NOT strictly metadata of string data; the reverse can be true.

@mkoo
Copy link
Member

mkoo commented Oct 12, 2018 via email

@Jegelewicz
Copy link
Member

Jegelewicz commented Oct 12, 2018

If I know the georeferencer and date, that is valuable information on whether or not I have confidence in their interpretation of a spatial description.

Agree and although you might be able to figure that out now, the way we record it via a specimen event makes it opaque and not necessarily something we are all doing in the same way.

@dustymc
Copy link
Contributor

dustymc commented Oct 12, 2018

Right now, I'd argue we have denormalized data since some of us are using locality remarks for georeferencing remarks or georeferencing determinations.

See #832

I dont see a down side to the overall Arctos model to be honest.

Agreed, it's just different. It's denormalization - there will be more STUFF to sort through (and maybe fix). If there's a reason to keep those data there (eg, we want to act as a gazetteer) then that may be a cost well worth paying.

@mkoo
Copy link
Member

mkoo commented Oct 12, 2018 via email

@dustymc
Copy link
Contributor

dustymc commented Oct 12, 2018

If you FIX (change) that, it'll eventually start to look like the georeferencer produced something they didn't. If you keep it and add another specimen-event (#1357 was intended to make that easy) you've got the historical data from herpnet (which might be fun for all sorts of things) and the specimen maps where it should.

If we knew what was georeferenced - if we'd added an entire locality stack (which wasn't possible at the time) to hold the data they used in creating the coordinates - we might know why the box is red. Was herpnet's county data broken, or was the specloc-interpreter to blame, or is the specloc really not in the county, or ??? Knowing that might lead to more problems, or easy fixes, or etc. I think that's all mostly irrelevant for this discussion - I'd advocate adding events and keeping all that no matter what the locality table looks like - but I'm still not really seeing what having Shugart in the locality can do (at least in the context of that specimen) that having Shugart as event determiner cannot do.

@mkoo
Copy link
Member

mkoo commented Oct 12, 2018 via email

@DerekSikes
Copy link

DerekSikes commented Oct 12, 2018 via email

@Jegelewicz
Copy link
Member

I added coordinates to a locality today. The georeference was performed by Carl Lieb in 2015, but the world believes that I did this in 2019:

image

I still feel like we are not properly recording WHO came up with the coordinates, WHEN they did it and HOW, especially since the coordinates Carl provided were in degrees decimal minutes which are saved nowhere in this edit.

@campmlc
Copy link

campmlc commented Apr 5, 2019

@anna-chinn georeferenced some localities shared with MSB, and we received the notification and can use the view edit archive to see that Anna added the coordinates. However, I'm concerned because the specimen event does not show who did the georeferencing. One event was assigned by Robert L. Rausch in 1952, but then we have coordinates with no source displayed. .Is there a way to add this to the specimen record display? https://arctos.database.museum/guid/MSB:Host:18692.

I realize the alternative would have been for Anna to create a new georeferenced locality for her specimens, with her name as the specimen event determiner, and then we'd all supposedly add this new event to all our different specimen records. But that defeats the purpose of having shared localities, doesn't it? I am happy to have Anna georeference some of our old localities, just would like to see that she did so and how.
Another issue is that the locality "Beaver" seems to cross multiple higher geographies and state boundaries. I can't tell when logged in whether Anna's edits georeferenced all these to the same coordinates.
If so, that is a problem that needs to be corrected. @dustymc ?

Screenshot 2019-04-05 10 54 16

@campmlc
Copy link

campmlc commented Apr 5, 2019

To make things even more interesting with that previous example, it is a host record linked to parasites from the same locality. But the parasite records were georeferenced at MSB in 2016 and have a different higher geography.
Suggestions on how to fix / prevent / improve this process?

@dustymc
Copy link
Contributor

dustymc commented Apr 5, 2019

Is there a way to add this to the specimen record display?

That's "just" UI so there's not much technical issue. A locality could have a billion edits though (and the event might have a billion more), so I'm not sure HOW to display it.

ew georeferenced locality for her specimens, with her name as the specimen event determiner, and then we'd all supposedly add this new event to all our different specimen records. But that defeats the purpose of having shared localities, doesn't it?

Yes, you'd have to do the same work without the sharing.

locality "Beaver" seems to cross multiple higher geographies and state boundaries

If you're talking about the gray boxes on Edit Locality, those are OTHER localities that don't, but probably should, share higher geography. Eg, if I search "Beaver" + "North America, United States, Alaska" I'll get one set of specimens, "Beaver+North America, United States, Alaska, Beaver Quad" will get me more (with no overlap), and "beaver+ North America, United States, Alaska, Beaver Quad, Yukon Flats National Wildlife Refuge" will find yet another set with no overlap with the other 2. Those are all the same place, we're just horribly inconsistent in how we assign geography to specimens and so users who search by geography don't find what they're looking for. http://handbook.arctosdb.org/documentation/higher-geography.html#guidelines-for-assigning-geography-to-specimens

host record linked to parasites from the same locality. But the parasite records were georeferenced at MSB in 2016 and have a different higher geography.
Suggestions on how to fix / prevent / improve this process?

Not really, other than accurate entry (and you may just not have the data for that). I think I can find things in relationships that don't share localities, but that would be complicated by things like http://arctos.database.museum/guid/MSB:Mamm:292063 (which claims it was killed twice) and parasites collected from living hosts and the 'experimental' thing and .... - I'm not sure what I could do from such a report. New Issue I think.

@DerekSikes
Copy link

When are we going to have proper 'georeferenced by' data?

GBIF is misinterpreting our data. Note that this record

http://arctos.database.museum/guid/UAM:Ento:284204

in GBIF has the collector listed as the agent for 'Georeferenced by'

https://www.gbif.org/occurrence/1146075287

but I happen to know that it was my lab techs who georeferenced this. Which one? I don't know and I don't even know how I might find out.

@dustymc
Copy link
Contributor

dustymc commented Apr 9, 2019

GBIF isn't interpreting anything, they're just using what you provide.

Screen Shot 2019-04-09 at 10 10 50 AM

That may not be a perfect map to DWC:georeferencedBy but what we're doing does fit very well with GBIF's label "Location according to."

The history of the locality is here:

Screen Shot 2019-04-09 at 10 11 54 AM

Screen Shot 2019-04-09 at 10 12 04 AM

Screen Shot 2019-04-09 at 10 12 11 AM

although that one hasn't changed since we started tracking.

@DerekSikes
Copy link

DerekSikes commented Apr 9, 2019 via email

@dustymc
Copy link
Contributor

dustymc commented Apr 11, 2019

Bulk-tool adjustments should be pushed off to #1357

@DerekSikes here's your data


create table temp_uam_ent_evt as
 select guid from flat , specimen_event, collecting_event, locality, collector where flat.collection_object_id=specimen_event.collection_object_id and
 specimen_event.collecting_event_id=collecting_event.collecting_event_id and collecting_event.locality_id=locality.locality_id and
 flat.collection_object_id=collector.collection_object_id and
 locality.dec_lat is not null and 
 to_number(substr(collecting_event.ended_date,1,instr(collecting_event.ended_date,'-')-1))<1990 and
 collector.agent_id=specimen_event.ASSIGNED_BY_AGENT_ID and
 flat.guid like 'UAM:Ento:%'
;

temp_uam_ent_evt.csv.zip

AWG consensus

  • we won't make drastic concept-altering changes to locality
    • we need better documentation re: what type of thing a locality IS (facts vs determinations) so we can better understand what would change that
  • make locality edit history public
  • add direct links from specimendetail to locality edit history

proceed with #1270 then #1357

@DerekSikes
Copy link

DerekSikes commented Apr 11, 2019 via email

@Jegelewicz
Copy link
Member

hmmm I see that the collector is listed as the event determiner for that record, which is wrong. I wonder how many similar mistakes have been made by data entry techs who didn't understand what 'event determiner' meant?

I'd bet A LOT of our event determiners are incorrect because some of us didn't get this (and maybe still don't?)

@dustymc
Copy link
Contributor

dustymc commented Apr 11, 2019

@DerekSikes confirm that this looks like them and I'll switch event determiner.


create table temp_uam_ent_evt_d as
 select 
  guid,
  collecting_event.ended_date,
  specimen_event.specimen_event_id,
  specimen_event.ASSIGNED_BY_AGENT_ID,
  getPreferredAgentName(specimen_event.ASSIGNED_BY_AGENT_ID) eventassignedby,
  coll_object.ENTERED_PERSON_ID,
  getPreferredAgentName(coll_object.ENTERED_PERSON_ID) enteredby,
  locality.GEOREFERENCE_SOURCE
 from 
  flat , 
  specimen_event, 
  collecting_event, 
  locality, 
  collector,
  coll_object 
where 
  flat.collection_object_id=specimen_event.collection_object_id and
  specimen_event.collecting_event_id=collecting_event.collecting_event_id and 
  collecting_event.locality_id=locality.locality_id and
  flat.collection_object_id=collector.collection_object_id and
  flat.collection_object_id=coll_object.collection_object_id and
  locality.dec_lat is not null and 
  to_number(substr(collecting_event.ended_date,1,instr(collecting_event.ended_date,'-')-1))<=2000 and
  collector.agent_id=specimen_event.ASSIGNED_BY_AGENT_ID and
   (
      flat.guid like 'UAM:Ento:%' or 
      flat.guid like 'KWP:Ento:%' or 
      flat.guid like 'UAMObs:Ento:%'
    ) and
   lower(locality.GEOREFERENCE_SOURCE) like '%google%'
;

temp_uam_ent_evt_d.csv.zip

@DerekSikes
Copy link

DerekSikes commented Apr 11, 2019 via email

@DerekSikes
Copy link

DerekSikes commented Apr 11, 2019 via email

@DerekSikes
Copy link

DerekSikes commented Apr 17, 2019 via email

@dustymc
Copy link
Contributor

dustymc commented Apr 17, 2019

Sorry, got sidetracked...

So, if we go ahead with this switch, will it preserve the history?

Not if we do a straight replacement - there's no automagic specimen-event history.

event determiner should be whomever...

said "this specimen was {event_type} there, then." (There's some subtlety in that. "Tuning" either the "there" or the "then" makes a history of the locality/event, while fundamentally altering the nature of the event/locality should probably be accomplished by adding a stack. That mostly relies on users and documentation, not technology.)

You could clone the event and add a specimen-event - the current one (which could be flipped to unaccepted) one would hold Ken's 'verbatim' data, and a new one could differ only by lacking that. #1357 would make that easy. #2041 makes it a little weird - we should somehow stop putting "from the collector" verbatim in with "from the UI/bulkloader" verbatim.

Realistically I think most collections would just copy the verbatim coordinates to verbatim locality, and some would have entered them there. #2041. I'm sure I waffle around on it, but I think I like that - it puts the verbatim data in a front-and-center field designed to hold verbatim from the collector data instead of scattered around various places including stuff designed to hold input that gets transformed.

I'm happy to make any of those changes for you - I assume it's not just the one specimen?

@DerekSikes
Copy link

DerekSikes commented Apr 17, 2019 via email

@dustymc
Copy link
Contributor

dustymc commented Apr 18, 2019

make this switch

done

@DerekSikes
Copy link

DerekSikes commented Apr 18, 2019 via email

@dustymc
Copy link
Contributor

dustymc commented Oct 2, 2019

#2274

@dustymc
Copy link
Contributor

dustymc commented Feb 21, 2020

#2498 makes this irrelevant; it will be possible to normalize (eventually/hopefully even more than now), or to denormalize to about any extent.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Function-Locality/Event/Georeferencing NeedsDocumentation When the issue is resolved in Arctos repository, this should be moved to the Documentation-wiki repo
Projects
None yet
Development

No branches or pull requests

7 participants