Внесені рецепти колекції

На цій сторінці представлені списки випадків використання. Якщо ви шукаєте пряму, практичну інформацію, ви знаходитесь у потрібному місці. Якщо ви віддаєте перевагу докладній презентації структури програмного забезпечення та бази даних, перегляньте розділ програмне забезпечення для ботанічних садів

Весь матеріал тут був внесений садами, використовуючи програмне забезпечення та обмін досвідом для користувачів.

Автори програмного забезпечення хочуть всім щиро подякувати.

Ботанічний сад Кіто

У квітні 2015 року у JBQ, Ботанічний сад Кіто, ми прийняли програмне забезпечення Ghini. З того часу ми накопичили досвід роботи з програмою, і ми самі повинні його документувати, щоб забезпечити знання в установі. Ми з радістю поділяємо це.

Технічний

  • Ми працюємо над GNU/Linux, платформою, якою багато користувачів не оволодіють, і наша база даних знаходиться всередині віддаленої системи управління базами даних. Це означає кроки, які не є очевидними для звичайних кінцевих користувачів.

    Як запустити програму

    Щоб запустити програму із зазначенням її назви, натисніть |loose_png | Клавіша поруч з Alt або клацніть на |10000000000000300000002F89E0224ADF9EC09E_png|, після чого почніть вводити назву програми, у нашому випадку “Ghini” або просто натиснути символ програми 100000000000003100000031BB54CBDFA885EBAC_png, що з’являється біля лівих крапок вашого дисплея.

    Сервер баз даних

    Ми обрали для централізованого сервера баз даних PostgreSQL. Таким чином, ми захищені від одночасних конфліктуючих змін, і всі зміни одночасно доступні для всіх клієнтів ghini. Нам потрібно було використовувати аутсорсинг керування сервером бази даних.

    додавання нового користувача

    Ghini відстежує користувача, який виконує всі види редагування в базі даних, і в саду, крім постійних користувачів, у нас є всілякі тимчасові користувачі, які пишуть в базу даних, і ми вирішили дозволити Ghini допомогти нам стежити за подіями бази даних.

    Оскільки ми працюємо з PostgreSQL, користувачі, яких зберігає Ghini в історії бази даних, є користувачі бази даних, а не користувачі системи.

    Кожен користувач знає свій пароль, і тільки він знає його. Наш суперкористувач, який відповідає за вміст бази даних, також має bauble вигаданий пароль користувача, який ми використовуємо лише для створення інших користувачів.

    Ми не використовуємо назви облікових записів, як voluntario, оскільки такі облікові записи не допомагають нам пов’язувати ім’я з особами.

    — додавання нового користувача системи (linux/osx)

    Додавання системного користувача не є обов’язково необхідним, оскільки ghini не використовує його в журналах, однак додавши, що системний користувач дозволяє розділити налаштування, налаштовані з’єднання, історію пошуку. У деяких наших системах ми маємо єдиний загальний обліковий запис з кількома налаштованими з’єднаннями, в інших системах ми маємо один обліковий запис для кожного користувача.

    На системах з одним обліковим записом для кожного користувача наші користувачі мають одне налаштоване з’єднання, і ми зберігаємо пароль бази даних у файлі /home/<account>/.pgpass. Цей файл є лише читабельним для власника <account>.

    У системах із загальним обліковим записом користувач повинен вибрати своє власне з’єднання та ввести відповідний пароль.

    Ось кроки для додавання користувачів системи:

    sudo -k; sudo adduser test
    sudo adduser test adm; sudo adduser test sudo
    sudo adduser test sambashare; sudo adduser test ghini
    

    — додавання нового користувача бази даних

    Ghini має дуже мінімальний інтерфейс для управління користувачами, він працює тільки з postgresql, і його дуже не вистачає. Ми відкрили питання, які дозволять нам використовувати його, поки що ми використовуємо сценарій create-role.sh:

    #!/bin/bash
    USER=$1
    PASSWD=$2
    shift 2
    cat <<EOF | psql bauble -U bauble $@
    create role $USER with login password '$PASSWD';
    alter role $USER with login password '$PASSWD';
    grant all privileges on all tables in schema public to $USER;
    grant all privileges on all sequences in schema public to $USER;
    grant all privileges on all functions in schema public to $USER;
    EOF
    

    Надлишкова alter role після `` create role`` дозволяє застосовувати один і той же сценарій для виправлення існуючих облікових записів.

    Наша база даних ghini називається bauble, і bauble також ім’я суперкористувача нашої бази даних, єдиного користувача з CREATEROLE привілеєм.

    Наприклад, наступний виклик створить користувача willem з паролем orange у базі bauble, розміщених на 192.168.5.6:

    ./create-role.sh willem orange -h 192.168.5.6
    
  • Розуміння того, коли оновлювати

    Оновлення системи

    Оновлення Ubuntu набагато легше і простіше, ніж у Windows. Тому коли система пропонує оновлення, ми дозволимо це зробити. Як правило, не потрібно чекати під час оновлення, ані перезавантажувати після завершення.

    Оновлення ghini

    Перше вікно, представлене Ghini, виглядає так. Зазвичай у цьому вікні вам нічого не потрібно робити, просто натисніть клавішу Enter і потрапите у головний екран програми.

    10000000000001290000011FEE16D735EB3DBF67_png

    Іноді у верхній частині екрана з’являється інформаційний текст, в якому повідомляється, що нова версія доступна в режимі онлайн.

    10000000000001290000011FEE16D735EB3DBF66_png

    Процедура оновлення проста, і це залежить від використовуваної вами операційної системи, ми не пояснюємо тут ще раз.

    Як правило, хороша ідея оновлення програмного забезпечення. Якщо у вас сумніви, зв’яжіться з автором або напишіть у групу.

  • розуміння початкового екрану ghini

    Повний екран

    На момент написання наш початковий екран виглядав так:

    100000000000063F00000383F7EAFB008DE6E4E2_png

    Крім основного меню додатків, Ghini пропонує три розділи спеціального інтерфейсу з інформацією та інструментами для вивчення бази даних.

    Числовий огляд

    Таблиця у правій половині екрана, яка містить зведення всіх зареєстрованих рослин, можна спостерігати. Кожна запис, надрукований жирним шрифтом, є посиланням на запит, вибравши відповідні об’єкти.

    100000000000018700000173222371085C3C68FE_png

    Збережені запити

    Нижня половина правої сторони містить набір збережених запитів. Хоча ви можете редагувати їх за вашим бажанням, наші підказки включають вибір тих приєднань, які не були ідентифіковані за категоріями видів. І один для історії бази даних.

    100000000000018700000173222371085C3C68FF_png

    Кнопки запиту та дії

    У верхній частині цього екрана ви можете знайти поле, в яке потрібно ввести ваші пошуки.

    10000000000006090000001FA253BB9470AD4994_png

    • З 100000000000001C00000020F4C7873186014F2F_png кнопки, у вигляді будинку, ви можете повернутися з ваших пошуків на головний екран.
    • З 100000000000001B000000207EC6F9075C9D3669_png кнопки, у формі стрілки, ви можете повернутися до вашого останнього пошуку.
    • З 100000000000001C0000001FB8A1F75F7A5EF877_png кнопки, у формі передач, ви можете запустити «Query Builder», який допоможе вам скласти складні пошуки в простий, графічний спосіб.
  • У нас часто є добровольці, які працюють тільки в саду дуже короткий час. Саме це маючи на увазі, ми розробили hyper-simplified view на Ghini структури бази даних.

    Деталі

    Дві цифри тут показують все, що наші тимчасові співробітники повинні знати.

    Таксономія та колекція Сад
    _images/family-to-accession.png
    _images/location-to-plant.png
  • Іноді програма повідомляє про помилку. dontpanic_png, повторіть спробу або повідомте розробникам.

    Мережеві проблеми

    Для роботи програма потребує стабільного мережевого підключення до сервера баз даних. Це може статися: ви запускаєте програму, і вона не може підключитися до нашого сервера баз даних. Потім ви отримаєте досить явне, але дуже погано набираєме повідомлення про помилку.

    100000000000020B000000FBCAB1860DB92DF14A_png

    Просто ігноруйте його і повторіть спробу.

    Пошук не вдається з помилкою

    Іноді і без будь-якої очевидної причини пошук не буде успішно виконуватися, і з’явиться вікно з повідомленням про помилку. У цьому випадку вам доведеться спробувати виконати той самий пошук ще раз.

    Приклад такого повідомлення про помилку:

    10000000000002140000014D050A059AC7EE948A_png

    Пошук не повертає те, що я щойно вставив

    Коди приєднання, що починаються з нуля і складаються з чисел, наприклад, 016489 розглядаються програмним забезпеченням як числа, тому якщо ви не вкладете рядок пошуку в лапки, будь-який провідний 0 буде знятий і значення буде не знайдено.

    Спробуйте ще раз, але додайте свій пошуковий рядок в одинарні або подвійні лапки.

    Номер на етикетці відповідний пошук
    16489 „016489“

    Будь ласка, запримітьте: коли ви шукаєте код рослини, а не приєднання, провідний нуль стає необов’язковим, тому в наведеному вище прикладі може бути простіше вводити 16489.1.

  • Серйозна ситуація трапляється один раз, і ми абсолютно хочемо запобігти цьому: знову користувач видалив рід, все, що було нижче, види і приєднання та синоніми.

    Вирішення з правами користувачів

    Ми пропонуємо мати різні профілі з’єднання, пов’язані з різними користувачами баз даних, кожен користувач із усіма необхідними правами доступу.

    Повний дозвіл (BD-JBQ)

    Тільки кваліфікований персонал отримує такий доступ.

    Вставити та оновити (BD-JBQ-limitado)

    Ми використовуємо цю програму для тих користувачів, які нам допомагають протягом обмеженого часу, і які не отримали повного введення в концепції бази даних. Вона призначена для запобігання серйозних помилок.

    Тільки для читання (BD-JBQ-lectura)

    це може бути доступним для всіх, хто відвідує сад

    Ви вибираєте підключення під час запуску, а програма запитає вас про пароль, що відповідає обраному вами з’єднанню.

    10000000000000FE00000065C64D791B5CA0099D_png

    Якщо ви хочете переглянути деталі підключення, натисніть кнопку ▶ поруч із пунктом «Подробиці підключення», вона змінюється на ▼, і вікно з’єднання відображатиметься як одне з наступних:

    100000000000012F000001A611615FB62F2D003B_png 100000000000012F000001A611615FB62F2D003D_png 100000000000012F000001A611615FB62F2D003C_png

    Як бачимо, ми підключаємося до того ж сервера баз даних, кожен зв’язок використовує ту саму базу даних на сервері, але з іншим користувачем.

    Думаю далі про це

    З іншого боку, ми ставимо під сумнів, чи це взагалі доречно, дозволяючи будь-якому користувачеві видалити щось на такому високому рівні, як сім’я або рід, або, у зв’язку з цим, щось пов’язане з приєднаннями до колекції.

    Спосіб, за допомогою якого ghini поставив запитання про функції програмного забезпечення, полягає у відкритті відповідної проблеми <https://github.com/Ghini/ghini.desktop/issues/218> `_.

  • При зверненні до розробників вони обов’язково просять технічну інформацію або, принаймні, побачити екранний знімок. Допоможіть їм допомогти вам.

    Зйомка екрану

    У Linux існує три способи створення знімка екрана, все включається натисканням клавіші „PrtSc“. Найбільш практичний варіант, можливо, комбінація клавіш „PrtSc“ з Ctrl і Shift. Запуститься інтерактивний інструмент копіювання екрана. Ви вибираєте прямокутник і область буде скопійована в буфер обміну. Вставте його в електронний лист, який ви пишете, або в чаті, де розробники намагатимуться вам допомогти.

    Де знаходяться журнали

    Ghini постійно зберігає дуже інформативний файл журналу у файлі ~/.bauble/bauble.log. Не хвилюйтеся відкриваючи його, просто надішліть його. Він містить багато технічної інформації.

    Безперервне безпілотне оповіщення

    Інший варіант - активувати обробник sentry. Він повідомить наш сторожовий сервер про будь-які серйозні ситуації в програмному забезпеченні. Якщо ви зареєструвалися, розробники будуть знати, як з вами зв’язуватися, якщо це необхідно.

    Для здорових песимістів: ми не стежимо за тим, що ви робите, ми стежимо за тим, як працює наше програмне забезпечення. Ви завжди можете відмовитися.

    Ви активуєте обробник Sentry на сторінці : prefs: шукайте рядок з назвою bauble.use_sentry_handler, якщо значення не є тим, що ви хочете, двічі натисніть по лінії, і вона зміниться на інше значення.

Таксономія

  • Введення

    Таксономічна складність орхідей

    У JBQ ми найбільше працюємо з орхідеями сімейства Orchidaceae, однією з найбільших рослинних сімейств, з не менш 850 родів, організованих - згідно з Dressler - приблизно 70 субтрибами, 22 трибами, 5 підродин. Як ми представляємо цю інформацію, це не є очевидним і потребує пояснення.

    Таксономія сімейства Orchidaceae постійно переглядається. Роди додаються, відмовляються, реорганізуються, визнаються синонімами, деякі таксономісти віддають перевагу групі видів або пологів по-новому, інші розділяють їх знову і по-різному, ботаніки різних національностей можуть мати різні погляди на цю справу. Все це звучить дуже складно і спеціально, але це є частиною нашої повсякденної роботи, і все це можна зберегти в нашій базі даних Ghini.

  • Визначення по рангу роду або сім’ї

    По родовому рангу

    Ghini-1.0 передбачає, що в усіх випадках приєднання виявляється за рівнем виду. Нинішній супровідник визнає, що це помилка, починаючи з ранніх днів Bauble, і яка Ghini-1.0 має спільне з іншим ботанічним програмним забезпеченням. Доки це не буде зафіксовано, ми покладаємось на встановлені практики.

    Якщо приєднання визначається по родовому рангу, ми додаємо вигадані види в цьому роді, ми не вказуємо епітет свого виду (ми цього не знаємо), і ми додаємо незареєстрований епітет у розділі інфрачервоної інформації, як це:

    _images/genus_sp-editing.png

    Коли він відображається в результатах пошуку, він виглядає так:

    _images/genus_sp-explained.svg

    По сімейному рангу

    Якщо приєднання визначається лише по рангу сім’ї, нам потрібен вигаданий рід, до якого ми можемо додати фіктивні види. Оскільки наш сад в першу чергу орієнтується на Orchidaceae, ми використовуємо дуже коротке ім’я Zzz для вигаданого роду в сім’ї, як це:

    _images/zzz-explained.svg

    Поточний супровідник пропонує використовувати префікс Zzz- і за префіксом для написання імені сім’ї, можливо, зняття закінчення e. Видалення пробілу e корисно для того, щоб не отримувати результатів, які містять назви родів, коли ви, як для речовини, що закінчується aceae.

    Окрім вищезазначеного Zzz у сімействі Orchidaceae, ми дотримуємося запропонованої практики, тому, наприклад, наша колекція включатиме Zzz-cactacea або Zzz-bromeliacea.

    Пам’ятайте: наш Zzz рід є вигаданим родом у сім’ї Orchidaceae, не використовуйте його як невизначений рід в інших сім’ях.

  • Визначення за рангом, яке не дозволено програмним забезпеченням (наприклад: Subtribe або підсемейство)

    По рангу субтриб

    Ми іноді не можемо визначити таксонів у родовому класі, але нам вдається бути точнішим, ніж просто «це орхідея». Часто ми можемо вказати субтриб, це корисно, коли ви хочете виготовити гібриди.

    Програмне забезпечення не дозволяє нам зберігати ряди, які є проміжними між сім’єю та родом, тому нам потрібно щось винайти, і це ми робимо:

    Ми вставляємо вигаданий рід, називаючи його сабтриб, передусім називаючи його „Zzx-“, як у цьому прикладі:

    _images/tribe_sp-explained.svg

    Це Zzx-Laeliinae є деяким родом в Laeliinae субтрибу.

    Щоб мати можливість вибирати рід за допомогою subtribe, ми також додаємо нотатку до вигаданого роду Zzx-Laeliinae, а також для всіх справжніх родів у цьому підзаголовоку, примітку категорії subtribus, відзначимо значення імені субтиба.

    Це дозволяє виконувати такі запити, як:

    genus where notes.note=Laeliinae

    Ми дуже з нетерпінням чекаємо цього issue-9 вирішено!

    По рангу підродини, триба

    Оскільки ми зарезервували префікс Zzx- для субтрибу, ми зберігаємо префікси Zzy для трибу, Zzw- для підродини.

    Зокрема інформація підродини є актуальною, оскільки в сімействах Orchidaceae є підродини, які ще не розділені.

  • Редагування ідентифікації приєднання - відомості виду

    Покажчик місця заповнення видів для окремих приєднань

    Сценарій описує ідентифікацію єдиного приєднання, яке було пов’язане з «родовим», заповнювачем видів, щось типу “Zzz sp” або “Vanda sp”;

    У цьому випадку, коли виявляється вид рослини, ми змінюємо асоціацію при приєднанні, вибираючи інший вид.

    _images/accession-vanda_sp.png

    Ми не редагуємо види, оскільки можуть бути абсолютно незв’язані приєднання, пов’язані з тими ж типами заповнювачів.

    Невідомі види для численних приєднань

    Інша справа - коли ми маємо цілу партію приєднань, все це, очевидно, є одним і тим же видом, але ми не змогли його ідентифікувати. У цьому випадку ми пов’язуємо приєднання з неповним зазначеним видом, щось на кшталт “Zzz sp-59”, бажано додати ім’я таксономіста, який створив асоціацію.

    Вид, як “Vanda sp-018599”, не є заповнювачем, це дуже конкретний вид, який ми ще не визначили.

    _images/genus_sp_author-editing.png

    У цьому випадку, коли вид ідентифікується (і це може бути навіть видом nova), ми безпосередньо редагуємо вид, тому всі приєднання, які належать до нього, отримують зміни.

  • Нові рослини відносяться до виду, ще не в нашій колекції.

    Остання хвилина видів

    Ми починаємо це з вікна приєднання, і це дуже просто, просто натисніть + поруч із назвою виду, ми потрапляємо у вікно види.

  • Додавання виду та використання онлайн-таксономічних послуг

    Додавання нового виду - список рослин.

    Ми починаємо очевидний спосіб: наберіть епітет родини, можливо, виділіть його з списку завершень, потім введіть епітет виду або, принаймні, найкращий припущення.

    _images/tpl-1-best_guess.png

    Поруч із видом епітетного поля є маленька кнопка, green_ball, яка з’єднує нас із списком рослин. Натисніть на неї, у верхній частині вікна з’явиться повідомлення.

    _images/tpl-2-querying.png

    Залежно від швидкості вашого інтернет-з’єднання, а також від того, наскільки правильно опубліковане ім’я, верхня область зміниться на щось подібне:

    _images/tpl-3-results.png

    Прийміть підказку, і це буде так, ніби ви самі набрали дані.

    _images/tpl-4-accepted.png

    Перегляд цілого вибору - TNRS.

    Це описано в посібнику, це надзвичайно корисно, не забувайте про це.

Нехай база даних підходить до саду

  • Невичерпне завдання - переглянути те, що ми маємо в саду, і поєднати його з базами.

    Початковий статус і змінні ресурси

    Коли ми прийняли ghini, ми імпортували в це все, що правильно описано в базі даних файлових виробників. Ця база даних орієнтувалася виключно на Орхідеї, і навіть це було далеко не повне. На практиці ми все ще зустрічаємо помічені рослини в саду, які ніколи не були вставлені в базу даних.

    Час від часу нам вдається отримати ресурси для перегляду саду, порівняння його з колекцією в базі даних, а головна діяльність полягає в тому, щоб вставити коди приєднання до бази даних, сфотографувати цю установку та помітити її місце розташування, Всі завдання, описані в решті частини цього розділу.

    Невеликий застосунок ghini.pocket для Android був доданий до сім’ї Ghini, коли програміст Ghini був тут у Кіто. Це допомагає нам зробити знімок бази даних на місці під час прогулянки в саду, також це дозволяє дуже швидку інвентаризацію.

    Процедури інвентаризації

    Запускаючи ghini.pocket, ми записуємо назву місця, де ми будемо проводити інвентаризацію, наприклад (INV 1) оранжереї 1. Ми вводимо (тип або сканування, якщо на рослині є штрих-код або QR-код) код приєднання, і ми розглянемо його в ghini.pocket.

    Побічним ефектом виконання пошуку є те, що ghini.pocket записує дату з часом, розташуванням та пошуковим кодом у текстовому файлі, який пізніше можна буде імпортувати до бази даних.

    Для оранжереї приблизно з 1000 рослин наші оцінки вказують на те, що вам доведеться спокійно працювати два дні з 8:00 до 17:00.

    Після імпорту файлу, створеного ghini.pocket, легко з’ясувати, які рослини відсутні. Наприклад: якщо ми провели інвентаризацію INV3 з 4 по 5 вересня, це відповідний пошук:

    plant where location.code = 'INV3' and not notes.note like '2017090%'
    

    Усі ці рослини можуть бути позначені як мертві або втрачені відповідно до садової політики.

    Візуалізуючи потребу таксономічної уваги

    Наш протокол містить ще одну деталь, призначену для візуального виділення рослин, які потребують уваги таксономіста.

    _images/taxonomic_alert.png

    Це рослина, що з’являється лише в нашій базі даних, ідентифікованій на рівні сім’ї, або це ще не база даних отримує візуальний сигнал (наприклад, дерев’яна або пластмасова палиця, для морозива або фрі), щоб підкреслити, що це не ідентифіковано. Таким чином, відповідальний таксоном, під час екскурсії по оранжереї, може швидко їх помістити і, можливо, продовжувати додавати свою ідентифікацію в базу даних.

  • Найменування конвенції в місцях саду

    Деталі

    code опис
    CAC-B x Резервний для рослин кактуса поряд з експозицією орхідей теплиць.
    CRV: Виявлення непентаних
    IC-xx: теплі орхідеї в саду (від 1А до 9С є конкретні місця між орхідею)
    IF-xx: холодні орхідеї в саду (від 1А до 5I - конкретні місця в саду орхідей)
    INV1: теплиця 1 (тепло)
    INV2: теплиця 2 (холодно)
    INV3: теплиця 3 (тепло)
  • Додавання приєднання для рослини

    Очевидно, що ми продовжуємо збільшувати свою колекцію, коли рослини надходять із комерційних джерел або збираються з дикої природи, рідше виходять з експедицій у віддалені райони нашої країни, або ми отримуємо рослини, які були незаконно зібрані.

    Іноді доводиться додавати рослини до цифрової колекції, лише тому, що ми їх фізично знаходимо в саду з міткою або без неї, але без їхнього цифрового аналога.

    Існуюча рослина, знайдена в саду з власною етикеткою

    Ця діяльність починається з рослини, яка була знайдена у певному місці саду, а також знак приєднання та знання про те, що код входження не знаходиться в базі даних.

    _images/plant.png _images/target.png _images/accession-008440.png

    1000000000000257000000504EC4536B148C3228_png

    Для цього прикладу, припустимо, ми будемо вставляти цю інформацію в базу даних.

    Приєднання Вид Розташування
    008440 Dendrobium דEmma White“ Теплиця 1 (тепло)

    Ми йдемо прямо в редактор приєднання, починаємо вводити назву виду у відповідному полі. На щастя, цей вид вже був у базі даних, інакше ми використали б кнопку Додати біля поля введення.

    _images/accession-select_taxon.png

    Ми вибираємо правильний вид, і ми заповнюємо ще пару полів, залишивши решту до значень за замовчуванням:

    ID приєднання Тип матеріалу Кількість Походження
    008440 Рослина 1 Невідомо

    Після цього ми продовжуємо в редакторі рослин, натиснувши кнопку Додати рослини.

    Ми не заповнюємо «Призначені місця розташування» приєднання, тому що ми не знаємо, що було первісним наміром, коли рослина була вперше придбана.

    У редакторі рослин ми вставляємо кількість та місце. І ми закінчили.

    Рослина тепер є частиною бази даних:

    10000000000001D5000000C7CF644BA0B1AB3FFF_png

    Нове приєднання: рослина просто входить у сад

    Ця діяльність починається з нової рослини, яка тільки що придбана від відомого джерела, ярлик рослини та передбачуваного розташування в саду.

    Ми в основному робимо те ж саме, що і в тому випадку, коли рослина знаходиться в саду, є дві відмінності: (1) ми знаємо джерело рослини; (2) придбання цієї рослини було планованим заходом, і ми маємо намір розмістити його в певному місці в саду.

    Знову ж таки ми йдемо прямо в редактор приєднання, починаємо вводити вид, і ми обираємо з списку завершень або додаємо його на льоту.

    ID приєднання Тип матеріалу Кількість Джерело
    033724 Рослина 1 точно визначений

    Після цього ми продовжуємо в редакторі рослин, натиснувши кнопку Додати рослини.

    У редакторі рослин ми вставляємо кількість та місце.

    Завбачте, що рослина може бути спочатку розміщена у теплиці, перш ніж вона досягне передбачуваного місця розташування в саду.

    Існуюча рослина, знайдена в саду без етикетки

    Коли це станеться, ми не можемо бути впевненими, що рослина ніколи не була в колекції, тому ми діємо так, наче ми переписали рослину. Це обговорюється в наступному розділі, але ми повернемося до випадку нового приєднання.

  • Коли ми фізично пов’язуємо етикетку на рослину, завжди існує шанс, що щось трапиться або з рослиною (вона може зів’янути), або на етикетці (може стати нечитабельною) або з асоціацію (її можна розділити). У нас є програмні протоколи для цих подій.

    Ми знаходимо мертву рослину

    Кожного разу, коли рослина виявлена мертвою, ми забираємо її мітку та поміщаємо її в поле поруч із основним терміналом введення даних, поле позначено як “мертві рослини”.

    Безумовно, щонайменше раз на тиждень, бокс вичерпується, а база даних оновлюється з цією інформацією.

    Мертві рослини не видалені з бази даних, вони залишаються там, але отримують кількість нуль. Якщо відомо про причину смерті, це також написано в базі даних.

    Будь ласка, ще раз пам’ятайте, що Рослина не є Приєднання, і, будь ласка, пам’ятайте, що ми не видаляємо об’єкти з бази даних, ми просто додаємо їхню історію.

    Вставте повний код рослини (щось на кшталт 012345.1 або 2017.0001.3, і вам не потрібні провідні нулі чи лапки), натисніть правою кнопкою миші на відповідному рядку та натисніть змінити . Змінити кількість на 0, вказати причину і, бажано, також дату зміни.

    Якщо вам потрібно додати будь-яку інформацію про смерть рослини, будь-ласка, використовуйте примітку та повторно використовуйте категорію примітки «death_cause».

    Рослини з кількістю нуль показані у різному кольорі у вікні результатів. Це допомагає відрізняти їх від живих рослин.

    Ми знаходимо рослину без етикетки

    Ми не можемо бути впевнені, що рослина коли-набудь була в колекції чи ні. Ми припускаємо, що це було, і що її етикетка була втрачена.

    Невдала втрата етикетки рослин, але це буває лише іноді. Що ми робимо, це ставимо на рослину нову етикетку і чітко говоримо, що етикетка є заміною оригіналу.

    Потім ми розглядаємо справу так, наче це було нове приєднання, а також ми додали примітку до приєднання, категорію “етикетка”, текст “перемарковані”.

  • Слідкуйте за різними джерелами рослинного матеріалу

    Які різні джерела ми можемо мати

    У цьому ботанічному саду ми одержуємо рослини з різних видів походження. Це може бути з експедицій (рослини виходячи з природи, зібрані з правовим дозволом МАЕ - Еквадорського Міністерства навколишнього середовища), подаровані рослини в основному приходять в якості подарунків від колекціонерів або орхідеї комерціалізації підприємств, придбаних або конфіскованих рослин (зазвичай відбуваються з МАЕ рейди по всій країні).

    Якщо рослина походить з дикоростучого джерела

    Редактор приєднання пропонує варіант «джерело». Коли рослина простежується до дикоростучого джерела, ми можемо вказати його конкретне походження. Ми хочемо дотримуватися ITF2, і ghini-1.0 лише частково дотримується цього стандарту. Параметри, що відповідають ITF2, такі:

    • Дикоростучі: приєднання дикоростучого джерела.
    • Культивовані: Росток (-и) з рослини дикоростучого джерела.
    • Не дикоростучі: приєднання неможливо відстежити до дикоростучого джерела.
    • Недостатньо даних

    У випадку донорської рослини краще поставити детальну інформацію як записку на приєднання рослини; У випадку з рослиною з невідомим джерелом, ми обираємо параметр недостатньо даних.

    Використання вкладки вихідного коду в редакторі приєднання

    У цьому розділі ми можемо створити або використати контакт, наше джерело рослинного матеріалу. Це може бути від експедиції до місця збирання, і в цьому випадку ми будемо вказувати назву регіону та назви експедиції або можемо назвати особу чи підприємство, що пожертвувало певну партію рослин.

    _images/accession-source-collection.png

    Вибравши або створивши контактну інформацію, в цьому розділі використовуються інші параметри, тут ви можете вказати регіон, де ви можете вибрати країну походження та конкретне місцезнаходження в регіоні, інформацію про географічну привабливість (включаючи дані GPS), опис місця проживання, назва колекціонера. Для останнього я рекомендую також написати конкретну дату поруч із назвою колекціонера (наприклад, Луїсом Бакеро, 10.11.2016 р.).

    Пожертвувані, куплені чи конфісковані рослини

    Однак це корисно для експедицій або для донорів, де основна інформація є географічною, така вкладка джерела не дуже практична у наших інших випадках: ми керуємося ще трьома категоріями: конфіскувати, придбати та пожертвувати, для цих категорій параметри, доступні на вкладці вихідного коду, не застосовуються: занадто багато інформації і не до речі.

    У цих випадках ми додаємо набір нотаток, відповідно до справи.

    — Пожертвувані рослини

    Якщо рослина була подарована індивідуумом, ми додаємо індивідуум серед наших контактів і вказуємо його як джерело, потім додаємо примітки:

    категорія текст
    source-type подарунок
    source-detail Науковий внесок у JBQ

    — Купили рослини

    Якщо рослина була куплена, ми додаємо попереднього власника серед наших контактів і вказуємо його як джерело, потім додаємо примітки:

    категорія текст
    source-type придбання
    source-detail необов’язковий, вільний текст
    factura номер рахунку-фактури

    — Конфісковані рослини

    Якщо рослина була конфіскована, ми додаємо попереднього власника серед наших контактів і вказуємо його як джерело, потім додаємо примітки:

    категорія текст
    source-type конфіскований
    source-detail можливо, юридичні деталі, номер закону …
  • Виробництво або відтворення етикеток

    Оновлення етикеток рослин

    Іноді ми оновлюємо етикетки, наприклад, все, що є в теплиці, або, можливо, просто набір рослин, тому що їх етикетки ризикують стати нечитабельними.

    У першому випадку легко вибрати всі рослини в місцезнаходженні, ми просто введемо назву місцезнаходження або надамо пошук location like <location name>.

    Другий випадок - трохи складніше. Що ми робимо, це створюємо тимчасовий Тег і використовуємо його для позначення всіх рослин, які були знайдені в необхідності для нової мітки.

    З огляду на вибір, ми запускаємо інструмент звітування, використовуючи шаблон mako accession-label.svg. Ми скидаємо свої параметри до значень за замовчуванням, і оскільки ми використовуємо простий принтер, ми встановлюємо колір на чорний замість синій, який призначений для гравюри.

    Підготовка етикеток для не базових рослин

    Для підготовки партії з 72 міток ми використовуємо шаблон звіту mako з ім’ям accession-label.svg. Цей шаблон приймає параметри, це приклад, який буде містити мітки від 025801 до 025872.

    _images/label-batch_72.png

    Етикетки приходять до нас у двох випадках: (1) або нові рослини, які просто прибувають у сад; (2) або рослини в саду, знайдені без етикетки. Ми розрізняємо два випадки, додавши „ret“ додатковий текст для перемаркованих рослин.

    Ми зберігаємо два бокси з мітками двох типів, готових до використання.

  • Наш сад має дві експозиційні теплиці та кілька теплих і холодних теплиць, в яких ми зберігаємо найбільшу частину нашої колекції. Рослини переміщуються до експозиції під час цвітіння і повертаються в «сховище», коли менш цікаві для експозиції. Для кожної рослини в нашій колекції нам потрібно знати його поточні розташування та історію рухів.

    Плановані дії

    Дія починається з переміщення рослин навколо та збирання коду рослин на папері або у нашому мобільному додатку, якщо така була.

    Потім ми переходимо на настільний термінал і переглядаємо всі рослини по черзі, змінюючи їх розташування в базі даних. Важливо, щоб дата зміни місцезнаходження була правильно збережена, оскільки це говорить нам, як довго рослина залишається в експозиції.

    Якщо б ми мали мобільний додаток, ми просто завантажили би інформацію на сервер, і ми зробимо це.

    Фактична корекція

    Під час перегляду саду ми знаходимо рослину в місці, де не базується база даних. Ми оновлюємо інформацію бази даних.

    Наприклад, рослини, що належить до приєднання “012142”, вид “Acineta sp” був знайдений в “Invernadero 1”, тоді як база даних говорить, що вона знаходиться в “ICAlm3”.

    Все, що ми робимо, це знаходимо рослину в базі даних та оновлюємо інформацію. Ми не змінюємо нічого в початковій інформації про приєднання, а саме про поточну інформацію про рослину.

    Ми вводимо код приєднання у поле вводу пошуку, з лапками, натискаємо Enter. Результати пошуку тепер показують приєднання, і це говорить нам, скільки рослин належить до нього. Натискаємо на квадраті + у рядку результатів, так що тепер ми також бачимо рядок для рослини, що належить до приєднання.

    Натисніть правою кнопкою миші на рядку рослина, з’являться три варіанти: Редагувати, Розділити, Видалити, виберіть Редагувати, ви потрапляєте в редактор рослин.

    Просто скопіюйте поле розташування та натисніть OK.

    InfoBox містить інформацію про останню зміну об’єкта:

    1000000000000608000002D2BA2D181475D5AD7B_png

    Для рослин, ще цікавіше, він створює історію змін, список яких включає в себе зміни місцезнаходження або кількість змін.

    _images/1000000000000608000002D2BA2D181475D5AD7C.png
  • Коли рослини виходять на етап цвітіння, ми можемо переглянути їх ідентифікацію безпосередньо, або ми робимо знімки деталей квітки, сподіваючись, що спеціаліст-відвідувач може допомогти завершити ідентифікацію.

    Додавання зображень

    Ми практикуємо з ODK Collect, невеликою програмою, що працює на ручних андроїдних пристроях. Використання Ghini у ODK Collect ще не заморожено до кращої практики. Погляньте на відповідний випуск на github.

  • Регулярно нам потрібні звіти про нашу колекцію, які вимагає Міністерство екології Республіки Еквадор (MAE), і це виправдовує саме існування саду.

    Створення звітів

    Щороку ботанічний сад повинен подати доповідь (щорічний звіт про управління та підтримці колекції орхідей), що відповідає вимогам Міністерства навколишнього середовища Еквадору.

    З цією метою ми починаємо вибирати рослини, які ми повинні включити до звіту. Це може бути все придбання в минулому році:

    accession where _created between |datetime|2017,1,1| and |datetime|2018,1,1|
    

    або всі рослини в межах місця, або всі рослини, що належать до певного виду, або просто все (але це займе час):

    plant where location = 'abc'
    plant where accession.species.epithet='muricata' and accession.species.genus.epithet='Annona'
    plant like %
    

    Вибравши у звіті об’єкти бази даних, ми запускаємо інструмент звітування, який діє на вибір.

Пошук в базі даних

Ви шукаєте в базі даних, щоб змінити дані далі, або тому, що хочете створити звіт. Так чи інакше, ви починаєте щось набирати в полі пошуку

10000000000006090000001FA253BB9470AD4994_png

і ви сподіваєтеся побачити свій результат у представленні результатів пошуку.

Пошук для редагування (рослина або приєднання)

Під час пошуку для редагування ви хочете бути дуже конкретними та вибрати якомога менше об’єктів. Найточніший пошук на основі номера рослини: ви знаєте код, ви отримуєте один об’єкт.

Якщо вашої рослини там немає, екран виглядатиме так:

_images/plant-017701-not_found.png

Інший приклад, в базі даних знаходиться рослина 007701.1:

_images/plant-007701-found.png

Всі поля з темнішим фоном у інформаційній коробці з правого боку є гіперпосиланнями на інші об’єкти в базі даних. Натискання на них буде або замінити текст у полі пошуку і виконувати запит, або просто додавати об’єкт до результатів.

Натискання на приєднання робить останній.

_images/plant-007701-accession.png

Тепер у представленні результатів пошуку є як Рослина, так і Приєднання, і тепер ми можемо редагувати одне або обидва.

Пошук з звітом

Під час пошуку для створення звіту ви хочете бути одночасно певними (ви не хочете повідомляти про невідповідні об’єкти) та широкі (ви не хочете повідомляти про один об’єкт).

Іноді сама доповідь пропонує запит, як, наприклад: всі рослини в теплиці 3; або: всі рослини, що належать до зникаючих видів (ми зберігаємо цю інформацію у примітці, пов’язаної з цим видом); або: всі рослини додані до колекції цього року;

plant where location.code = INV3
plant where accession.species.notes.note="endangered"
plant where accession._created > |datetime|2017,1,1|

Інший гнучкий спосіб досягти цього - працювати з Тегами.

Використовуйте Теги як розширений пошук

Іноді ми повинні робити однакові дії для об’єктів одного типу, але нам не вдається швидко подумати про пошуковий запит, який буде групувати все, що нам потрібно, і виключити все, що нам не потрібне.

Це одне можливе використання Тегів. Почнемо з вибору, ми позначаємо всі об’єкти у виборі під новим тимчасовим тегом. Скажімо, ми називаємо це «тимчасовий».

Ми продовжуємо пошук і додавання об’єктів до тимчасового тегу, доки тег не визначить всього, що нам потрібно.

Нарешті, в меню Теги вибираємо той, який ми щойно створили (у нашому прикладі це відповідає пошуку tag = 'тимчасовий'), і ми можемо викликати звіт.

Коли ми закінчимо тимчасовий тег, немає сенсу залишити його надалі, тому ми просто видалимо його.

_images/tag-delete.png

Будьте обізнані про наявні стратегії пошуку

Це добре документовано, «più non dimandare» і read the docs.

using ghini for a seed database

We keep getting involved in groups focusing on endagered plant seeds. They want to note down when seeds come in, but also when they go out to people that order the seed.

In ghini, we keep speaking of ›Plants‹, ›Locations‹, while such user groups focus on ›Seeds‹ and ›Jars‹ and ›Drawers‹ and ›Boxes‹ and ›Envelopes‹. So people wonder whether ghini could be adapted to their use case, or for directions on how to develop their own database.

Does ghini need being adapted for such a seed database?

no it doesn’t need any adaptation, it’s just that you need to read some of its terms differently.

the taxonomy part is just taxonomy, plant species information, no need to explain that, no way to interpret it otherwise.

›Accessions‹ and ›Plants‹, you know what an ›Accession‹ is, but since you’re consistently handling ›Plants‹ still only in seed form, the Wikipedia explanation of an accession sounds like this: it is a seed or group of seeds that are of the same taxon, are of the same propagule type (or treatment), were received from the same source, were received at the same time.

If you hold seeds in jars, or in other sort of containers that is able to hold hundreds of seeds, please make sure that a jar contains seeds of just one accession, as above described: same taxon, same treatment, same source, same time.

Each one of your ›Jars‹ of seeds is in ghini speak a ›Plant‹, and the amount of seeds in the ›Jar‹ is the ›Plant‹ ›quantity‹. An ›Envelope‹ is just the same as a ›Jar‹: a container of seeds from the same ›Accession‹, just presumably smaller.

A ›Box‹ (where you keep several ›Envelopes‹) or a ›Drawer‹ (where you keep several ›Jars‹) are in ghini speak a ›Location‹.

Since a ›Jar‹ or an ›Envelope‹ contains seeds from an ›Accession‹, you will clearly label it with its ›Accession‹ code (and trailing ›Plant‹ number). You might write the amount of seeds, too, but this would be repeating information from the database, and repeating information introduces an inconsistency risk factor.

How do I handle receiving a batch of seeds?

Примітка

When we receive seeds, we either collect them ourselves, or we receive it from an other seed collector. We handle receiving them possibly on the spot, or with a small delay. Even when handled together with several other batches of seeds we received, each batch keeps its individuality.

We want to be later able to find back, for example, how many seeds we still have from a specific batch, or when we last received seeds from a specific source.

As long as you put this information in the database, as long as you follow the same convention when doing so, you will be able to write and execute such queries using ghini.

One possibility, the one described here, is based on ›Notes‹. (Ghini does not, as yet, implement the concept «Acquisition». There is an issue related to the Acquisition and Donation objects, but we haven’t quite formalized things yet.)

You surely already use codes to identify a batch of seeds entering the seed bank. Just copy this code in a ›Note‹, category „received“, to each ›Accession‹ in the received batch. This will let you select the ›Accessions‹ by the query:

accession where notes[category='received'].note='<your code>'

Use the „Source“ tab if you think so, it offers space for indicating an external source, or an expedition. When receiving from an external source, you can specify the code internal to their organization. This will be useful when requesting an extra batch.

How do I handle sending seeds?

what you physically do is to grab the desired amount of seeds of the indicated species from a jar, put it in an envelope and send it. what you do from a point of view of the database is exactly the same, but precisely described in a protocol:

  • Use the database to identify the ›Jar‹ containing the desired amount of the right seeds.
  • remove that amount of seeds from the ›Jar‹ (decrement the quantity),
  • put the seeds in an ›Envelope‹ (yes, that’s a database object).
  • send the envelope (but keep it in the database).

this in short.

When I send seeds, it’s not just one bag, how does ghini help me keeping things together?

There’s two levels of keeping things together: one is while you’re preparing the sending, and then for later reference.

While preparing the sending, we advise you use a temporary ›Tag‹ on the objects being edited.

For later reference, you will have common ›Note‹ texts, to identify received and sent batches.

Can you give a complete example?

Right. Quite fair. Let’s see…

Say you were requested to deliver 50 seeds of Parnassia palustris, 30 of Gentiana pneumonanthe, 80 of Fritillaria meleagris, and 30 of Hypericum pulchrum.

step 1

The first step is to check the quantities you have in house, and if you do have enough, where you have them. You do this per requested species:

accession where species.genus.epithet=Parnassia and species.epithet=palustris and sum(plants.quantity)>0

Expand in the results pane the ›Accession‹ from which you want to grab the seeds, so you see the corresponding ›Jars‹, highlight one, and tag it with a new ›Tag‹. To do this the first time, go through the steps, just once, of creating a new ›Tag‹. The new tag becomes the active tag, and subsequent tagging will be speedier. I would call the tag ›sending‹, but that’s only for ease of exposition and further completely irrelevant.

Repeat the task for Gentiana pneumonanthe, Fritillaria meleagris, Hypericum pulchrum:

accession where species.genus.epithet=Gentiana and species.epithet=pneumonanthe and sum(plants.quantity)>0
accession where species.genus.epithet=Fritillaria and species.epithet=meleagris and sum(plants.quantity)>0
accession where species.genus.epithet=Hypericum and species.epithet=pulchrum and sum(plants.quantity)>0

Again highilight the accession from which you can grab seeds, and hit Ctrl-Y (this tags the highighted row with the active tag). Don’t worry if nothing seems to happen when you hit Ctrl-Y, this is a silent operation.

step 2

Now we prepare to go to the seeds bank, with the envelopes we want to fill.

Select the ›sending‹ ›Tag‹ from the tags menu, this will bring back in the results pane all the tagged ›Plants‹ (›Jars‹ or ›Envelopes‹), and will tell you in which ›Location‹ (›Drawer‹ or ›Box‹) they are to be found. Write this information on each of your physical envelopes. Write also the ›Species‹ name, and the quantity you can provide.

Walk now to your seeds bank and, for each of the envelopes you just prepared, open the ›Location‹, grab the ›Plant‹, extract the correct amount of seeds, put them in your physical envelope.

And back to the database!

step 3

If nobody used your workstation, you still have the Tag in the results pane, and it’s expanded so you see all the individual plants you tagged.

One by one, you have to ›split‹ the plant. This is a standard operation that you activate by right-clicking on the plant.

A plant editor window comes in view, in „split mode“.

Splitting a plant lets you create a database image of the plant group you just physically created, eg: it lets you subtract 30 items from the Gentiana pneumonanthe plant (group number one, that is the one in the jar), and create a new plant group for the same accession. A good practice would be to specify as ›Location‹ for this new plant the „out box“, that is, the envelope is on its way to leave the garden.

Не забудьте видалити тимчасове „sending“ ›Tag‹.

крок 4

Final step, it represents the physical step of sending the envelope, possibly together with several other envelopes, in a single sending, which should have a code.

Just as you did when you received a batch of plants, you work with notes, this time the category is „sent“, and the note text is whatever you normally do to identify a sending. So suppose you’re doing a second sending to Pino in 2018, you add the note to each of the newly created envelopes: category „sent“, text: „2018-pino-002“.

When you finally do send the envelopes, these stop being part of your collection. You still want to know that they have existed, but you do not want to count them among the seeds that are available to you.

Поверніть всі рослини у відправленні „2018-pino-002“ :

plant where notes[category='sent'].note = '2018-pino-002'

You now need to edit them one by one, mark the ›quantity‹ to zero, and optionally specify the reason of the change, which would be ›given away‹, and the recipient is already specified in the „sent“ ›Note‹.

Ця остання операція може бути автоматизованою, ми маємо на увазі, що це стане скриптом, який діє на вибір. Залишайтеся на зв’язку.