LSID - индекс для привязки биологических БД
-
- Гуру
- Сообщения: 920
- Зарегистрирован: 30 дек 2008, 14:11
- Репутация: 236
- Откуда: Ханты-Мансийск
- Контактная информация:
LSID - индекс для привязки биологических БД
Никто не сталкивался с таким явлением как LSID (Life Science Identifiers)? Специальный идентификационный индекс для живых объектов -- для точной идентификации данных в различных проектах по биоразнообразию (описание тут: http://www.ipni.org/lsids.html). Флагманами выступают GBIF http://gis-lab.info/qa/gbif-intro.html, EOL -- Enciclopedia of Life и множество других, большой список сетевых БД есть тут: http://gni.globalnames.org/data_sources.
Если я правильно понял, имея список LSID необходимых тебе объектов, можно отслеживать изменения и извлекать необходимую информацию (в том числе и пространственную) о необходимых видовых списках из Сети.
Вопрос такой: использовал ли кто в своих БД эти LSID, и как, имея на руках списки латинских названий, получить эти LSID?
----
Есть подозрение, что на форуме не хватает раздела, посвященного базам данных: вопросам использования различных БД в связке с ГИС. Судя по топику viewtopic.php?f=25&t=7401 вопросы уже накопились и нужно куда-то их складывать в одно место.
Если я правильно понял, имея список LSID необходимых тебе объектов, можно отслеживать изменения и извлекать необходимую информацию (в том числе и пространственную) о необходимых видовых списках из Сети.
Вопрос такой: использовал ли кто в своих БД эти LSID, и как, имея на руках списки латинских названий, получить эти LSID?
----
Есть подозрение, что на форуме не хватает раздела, посвященного базам данных: вопросам использования различных БД в связке с ГИС. Судя по топику viewtopic.php?f=25&t=7401 вопросы уже накопились и нужно куда-то их складывать в одно место.
-
- Гуру
- Сообщения: 920
- Зарегистрирован: 30 дек 2008, 14:11
- Репутация: 236
- Откуда: Ханты-Мансийск
- Контактная информация:
Re: LSID - индекс для привязки биологических БД
Я так подозреваю, что именно по LSID, GBIF привязывает к биологическому виду атрибутику из огромного количества БД. Для примера на запрос по Parus major (большая синица) GBIF выдает ссылки на таксономию, фотки, карту, ссылки на сканы музейных этикеток, записи голосов (исходная информация находится при этом на разных сайтах). http://data.gbif.org/species/13821362/
Т.о. создавая свой ресурс по биоразнообразию, и имея в бд LSID, можно встроиться в глобальную сеть биологических БД
Т.о. создавая свой ресурс по биоразнообразию, и имея в бд LSID, можно встроиться в глобальную сеть биологических БД
-
- Гуру
- Сообщения: 3321
- Зарегистрирован: 27 июл 2009, 19:26
- Репутация: 748
- Ваше звание: Вредитель полей
Re: LSID - индекс для привязки биологических БД
По вопросу конверсии латинского названия в LSID - возможно, написать скрипт, который будет спрашивать, скажем, тут http://taxon.luomus.fi/taxonindex.php ?
-
- Гуру
- Сообщения: 920
- Зарегистрирован: 30 дек 2008, 14:11
- Репутация: 236
- Откуда: Ханты-Мансийск
- Контактная информация:
Re: LSID - индекс для привязки биологических БД
Задача такая. Полагаю, что она может быть интересна не одному мне.
Есть некая БД в которой в качестве ключевого поля является поле "вид" с латинским названием растений, млеков, насекомых и т.д.
К этой БД нужно присоединить таблицу с систематическими атрибутами для этих видов: LSID, отряд, класс, семейство, род, альтернативные названия, (в том числе -- русское название, но это отдельная песня и вроде бы это тоже можно автоматизировать с использованием википедии).
В ручную вбивать, можно конечно, так оно и делалось, с кучей ошибок. Но посмотрев на имеющиеся БД, (больше всего таксонов видимо в GBIF и UBIO http://ubio.org/ сейчас). Понял, что хотя бы частично заполнение атрибутики можно автоматизировать.
Если интересно, могу дать тестовый список видов, для которого необходимо получить атрибутику (сам я не силен в программировании) но задачу эту все равно решать буду всеми доступными мне методами.
Есть некая БД в которой в качестве ключевого поля является поле "вид" с латинским названием растений, млеков, насекомых и т.д.
К этой БД нужно присоединить таблицу с систематическими атрибутами для этих видов: LSID, отряд, класс, семейство, род, альтернативные названия, (в том числе -- русское название, но это отдельная песня и вроде бы это тоже можно автоматизировать с использованием википедии).
В ручную вбивать, можно конечно, так оно и делалось, с кучей ошибок. Но посмотрев на имеющиеся БД, (больше всего таксонов видимо в GBIF и UBIO http://ubio.org/ сейчас). Понял, что хотя бы частично заполнение атрибутики можно автоматизировать.
Если интересно, могу дать тестовый список видов, для которого необходимо получить атрибутику (сам я не силен в программировании) но задачу эту все равно решать буду всеми доступными мне методами.
- Mavka
- Гуру
- Сообщения: 2060
- Зарегистрирован: 14 мар 2008, 17:36
- Репутация: 9
Re: LSID - индекс для привязки биологических БД
Меня это интересует, но как всегда некогда. Если выложите образчик, то может быть выдастся минутка...
лангольеры под окном жрали время ом-ном-ном
-
- Гуру
- Сообщения: 3321
- Зарегистрирован: 27 июл 2009, 19:26
- Репутация: 748
- Ваше звание: Вредитель полей
Re: LSID - индекс для привязки биологических БД
Хм, ну самое простое:
http://www.ubio.org/browser/search.php? ... a+pyrrhula (это снегирь)
И получаем 97 Scientific Matches
На Xpath можно соорудить путь, выбирающий все элементы <a> внутри таблицы //table[@class='bodyBox'] ячеек //td[@class="bodyBox"]/table/tbody/tr/td/table/tbody/tr/td и сравнивать их содержимое с исходной строкой.
Из них только 36 имеют вхождение исходной строки Pyrrhula pyrrhula, но только одно полностью с ней совпадает. Что делать, если нет полного совпадения - не имею понятия.
Совпадающая ссылка сразу указывает на http://www.ubio.org/browser/details.php ... ID=3850153
Ну а там действительно есть определенный простор для творчества в смысле разбора страницы, потому что логическим форматированием она не блещет, и нужен синтаксический анализ.
P.S.: То, что одному виду соответствует пачка LSID'ов, наводит на размышления, на самом деле...
http://www.ubio.org/browser/search.php? ... a+pyrrhula (это снегирь)
И получаем 97 Scientific Matches
На Xpath можно соорудить путь, выбирающий все элементы <a> внутри таблицы //table[@class='bodyBox'] ячеек //td[@class="bodyBox"]/table/tbody/tr/td/table/tbody/tr/td и сравнивать их содержимое с исходной строкой.
Из них только 36 имеют вхождение исходной строки Pyrrhula pyrrhula, но только одно полностью с ней совпадает. Что делать, если нет полного совпадения - не имею понятия.
Совпадающая ссылка сразу указывает на http://www.ubio.org/browser/details.php ... ID=3850153
Ну а там действительно есть определенный простор для творчества в смысле разбора страницы, потому что логическим форматированием она не блещет, и нужен синтаксический анализ.
P.S.: То, что одному виду соответствует пачка LSID'ов, наводит на размышления, на самом деле...
Последний раз редактировалось ericsson 13 апр 2011, 16:57, всего редактировалось 3 раза.
-
- Гуру
- Сообщения: 2627
- Зарегистрирован: 29 мар 2007, 14:12
- Репутация: 34
- Откуда: Ukraine
Re: LSID - индекс для привязки биологических БД
Задача интересная, но проблемы со временем. До окончания встречи разаботчиков QGIS точно не возьмусь. Возможно, после нее.
-
- Гуру
- Сообщения: 4168
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1107
- Ваше звание: программист
- Откуда: Казань
Re: LSID - индекс для привязки биологических БД
а если кто-то возьмется и сделает , хорошо бы сообщить широкой обчественности, например в виде статьи на гислабе.Voltron писал(а):Задача интересная, но проблемы со временем. До окончания встречи разаботчиков QGIS точно не возьмусь. Возможно, после нее.
-
- Гуру
- Сообщения: 920
- Зарегистрирован: 30 дек 2008, 14:11
- Репутация: 236
- Откуда: Ханты-Мансийск
- Контактная информация:
Re: LSID - индекс для привязки биологических БД
Тут спешить особо ни к чему. Неплохо было бы разобраться со структурой баз данных и взаимосвязями между ними. Я помаленьку вникаю, собираю информацию, как дозреет до чего-то законченного б.м., конечно предложу выложить здесь. Кому интересно пока порешать технические задачки -- вот список видов птиц Западной+Средней Сибири, достаточно полный. Ошибки проверял на два раза, но может где-то и проскочат еще.
- Вложения
-
sib_bird.txt
- (17.74 КБ) 635 скачиваний
-
- Гуру
- Сообщения: 3321
- Зарегистрирован: 27 июл 2009, 19:26
- Репутация: 748
- Ваше звание: Вредитель полей
Re: LSID - индекс для привязки биологических БД
Хм.. вот изучая эту самую структуру базы, я все меньше понимаю смысл LSID.
Точнее - прихожу к выводу, что конкретный LSID служит идентификатором вовсе не конкретного вида. А конкретной записи (которых даже для вида может быть несколько) в данной базе (namebank, classificationbank и т.п.) на данном сервере, не более того.
Текстовик на что проверять? Легко проверить на структуру - две подстроки из латинских алфавитных символов, начинающихся с заглавной буквы и разделителем - пробелом. Можно прогнать циклом запрос к базе по каждому названию и проверять, на содержит ли ответ "no results found".
Точнее - прихожу к выводу, что конкретный LSID служит идентификатором вовсе не конкретного вида. А конкретной записи (которых даже для вида может быть несколько) в данной базе (namebank, classificationbank и т.п.) на данном сервере, не более того.
Текстовик на что проверять? Легко проверить на структуру - две подстроки из латинских алфавитных символов, начинающихся с заглавной буквы и разделителем - пробелом. Можно прогнать циклом запрос к базе по каждому названию и проверять, на содержит ли ответ "no results found".
-
- Гуру
- Сообщения: 920
- Зарегистрирован: 30 дек 2008, 14:11
- Репутация: 236
- Откуда: Ханты-Мансийск
- Контактная информация:
Re: LSID - индекс для привязки биологических БД
Проверять на наличие записей в БД по данному виду, если записей нет, то два варианта -- либо ошибка в названии, либо название не общепринятое. Первая проблема решается исправлением ошибки, вторая -- поиском общеупотребительных синонимов.
Про LSID на сайте GBIF брошюрка есть: http://www2.gbif.org/Persistent-Identifiers.pdf
Про LSID на сайте GBIF брошюрка есть: http://www2.gbif.org/Persistent-Identifiers.pdf
-
- Гуру
- Сообщения: 3321
- Зарегистрирован: 27 июл 2009, 19:26
- Репутация: 748
- Ваше звание: Вредитель полей
Re: LSID - индекс для привязки биологических БД
Да, так и есть, идентификатор объекта (описания), а не вида.
Как-бы понятно, что классификации могут быть разными, но которое тогда выбрать, каковы критерии? Можно это уточнить на примере тех самых снегирей?
(Проверку списка сделаю в ближайшие дни, описание методики проверки тоже приведу.)
Как-бы понятно, что классификации могут быть разными, но которое тогда выбрать, каковы критерии? Можно это уточнить на примере тех самых снегирей?
(Проверку списка сделаю в ближайшие дни, описание методики проверки тоже приведу.)
-
- Гуру
- Сообщения: 920
- Зарегистрирован: 30 дек 2008, 14:11
- Репутация: 236
- Откуда: Ханты-Мансийск
- Контактная информация:
Re: LSID - индекс для привязки биологических БД
Пока не знаю, вникаю, как прояснится, что-то, доложу сюда. Возможно, что вся группа LSID нужна... а возможно только один LSID, причем в каждом отдельном случае, это должен выбирать специалист по данной группе живых организмов, придерживающийся определенной классификационной схемы для этой группы. Если так, то это существенно усложняет дело.
-
- Гуру
- Сообщения: 3321
- Зарегистрирован: 27 июл 2009, 19:26
- Репутация: 748
- Ваше звание: Вредитель полей
Re: LSID - индекс для привязки биологических БД
Буду, наверное, постепенно излагать.
Методики буду описывать для Windows-машины, стараясь использовать бесплатные или встроенные в ОС средства.
Проверка имен из файла.
Прежде всего, нужно проверить, в какой кодировке находятся данные. То, что в файле только латинские буквы - еще не показатель. Вот и в данном случае, приведенный выше sib_birds.txt оказался в UCS2 (с соответствующим маркером в начале файла), а нужно - в обычной двухбайтовой кодировке (ASCII, Win-1251 и т.п.).
Пересохранить можно через Notepad или любой другой редактор, который понимает кодировки. Или сразу указать ее при экспорте из Excel/ OO Calc/своей БД.
Далее, если формат латинского видового названия - два слова, разделенных пробелом, а в запросе к http://www.ubio.org/browser/search.php?search_all= слова должны быть объединены плюсом, то нам надо как-то этот плюс туда вставить. Для этого можно воспользоваться разными способами (например, поиском и заменой в редакторе, но это не элегантное решение, по крайней мере, для случая, когда число слов - фиксированное). Я предпочитаю использовать команду FOR из Windows shell.
Справка по команде: http://www.microsoft.com/resources/docu ... s/for.mspx
Она позволяет рассматривать файл, как таблицу с разделителем - пробелом. Т.е. в качестве строки поиска можно использовать шаблон %i+%j, где %i и %j - первое и второе слово в строке соответственно.
Второе, что нужно для отправки запроса на сервер и получения ответа - это утилита cURL, которую пользователи Linux уже имеют, а на Windows ее нужно поставить, скачав здесь http://curl.haxx.se/download.html бинарные файлы и положив их в каталог Windows, чтобы потом в скриптах не надо было писать к ним полный путь.
Далее, следует написать файл grab_names.bat, содержащий нужную команду и положить его в некий каталог, в котором будем работать.
Код следующий:
(процент заменяется на двойной, потому что в Windows синтаксис командной строки и командных файлов несколько отличается в этом моменте)
В итоге мы получим папку, содержащую HTML-файлы с ответами сервера, каждый файл будет иметь имя видовое название.html . Они понадобятся для двух вещей: проверки правильности названий (по наличию таковых в базе сервера) и собственно для извлечения описаний.
Обнаружить ответы сервера, означающие отсутствие такой записи в базе, легко. В таких страницах содержится строка No Results for, которую легко обнаружить командой FINDSTR.
Справка по команде: http://www.microsoft.com/resources/docu ... ndstr.mspx
Напишем еще один командный файл check_errors.bat :
После выполнения его в папке с ранее сохраненными html-файлами, получим в ней новый файл check_errors.log, который будет содержать имена тех файлов, в которых встречается ответ "Нет результатов".
Методики буду описывать для Windows-машины, стараясь использовать бесплатные или встроенные в ОС средства.
Проверка имен из файла.
Прежде всего, нужно проверить, в какой кодировке находятся данные. То, что в файле только латинские буквы - еще не показатель. Вот и в данном случае, приведенный выше sib_birds.txt оказался в UCS2 (с соответствующим маркером в начале файла), а нужно - в обычной двухбайтовой кодировке (ASCII, Win-1251 и т.п.).
Пересохранить можно через Notepad или любой другой редактор, который понимает кодировки. Или сразу указать ее при экспорте из Excel/ OO Calc/своей БД.
Далее, если формат латинского видового названия - два слова, разделенных пробелом, а в запросе к http://www.ubio.org/browser/search.php?search_all= слова должны быть объединены плюсом, то нам надо как-то этот плюс туда вставить. Для этого можно воспользоваться разными способами (например, поиском и заменой в редакторе, но это не элегантное решение, по крайней мере, для случая, когда число слов - фиксированное). Я предпочитаю использовать команду FOR из Windows shell.
Справка по команде: http://www.microsoft.com/resources/docu ... s/for.mspx
Она позволяет рассматривать файл, как таблицу с разделителем - пробелом. Т.е. в качестве строки поиска можно использовать шаблон %i+%j, где %i и %j - первое и второе слово в строке соответственно.
Второе, что нужно для отправки запроса на сервер и получения ответа - это утилита cURL, которую пользователи Linux уже имеют, а на Windows ее нужно поставить, скачав здесь http://curl.haxx.se/download.html бинарные файлы и положив их в каталог Windows, чтобы потом в скриптах не надо было писать к ним полный путь.
Далее, следует написать файл grab_names.bat, содержащий нужную команду и положить его в некий каталог, в котором будем работать.
Код следующий:
Код: Выделить всё
for /F "tokens=1,2" %%i in (sib_bird.txt) do curl "http://www.ubio.org/browser/search.php?search_all=%%i+%%j" -o "%%i %%j.html"
В итоге мы получим папку, содержащую HTML-файлы с ответами сервера, каждый файл будет иметь имя видовое название.html . Они понадобятся для двух вещей: проверки правильности названий (по наличию таковых в базе сервера) и собственно для извлечения описаний.
Обнаружить ответы сервера, означающие отсутствие такой записи в базе, легко. В таких страницах содержится строка No Results for, которую легко обнаружить командой FINDSTR.
Справка по команде: http://www.microsoft.com/resources/docu ... ndstr.mspx
Напишем еще один командный файл check_errors.bat :
Код: Выделить всё
findstr /m /c:"No Results for" *.html >check_errors.log
-
- Гуру
- Сообщения: 920
- Зарегистрирован: 30 дек 2008, 14:11
- Репутация: 236
- Откуда: Ханты-Мансийск
- Контактная информация:
Re: LSID - индекс для привязки биологических БД
Попробую воспроизвести последовательность действий.
Урывками продолжаю вникать в LSID, выяснилось, что есть еще некий TSN (Taxon Serial Number).
По ходу дела надыбалась прикольная статейка Patterson et al. 2010 Names are key to the big new biology http://decapoda.nhm.org/pdfs/31633/31633.pdf
Урывками продолжаю вникать в LSID, выяснилось, что есть еще некий TSN (Taxon Serial Number).
По ходу дела надыбалась прикольная статейка Patterson et al. 2010 Names are key to the big new biology http://decapoda.nhm.org/pdfs/31633/31633.pdf
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя