Як зв’язати код з публікаціями


40

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


2
Спільний доступ до коду - чудова ідея, і його слід робити більше. Я знаю, що міг би бути кращим у наданні відповідного коду для паперу. Репо з Github здається хорошим рішенням. Звичайно, набагато краще, ніж включити вихідний код у додаток, що я бачив, що робив для менших зусиль із кодування.
Баррон

4
Це споріднене питання МО.
JM

@JM Спасибі, відповіді на MO дуже хороші!
Девід Кетчесон

зауважте, що ви можете публікувати зошити ipython на github, і вони видаються, за винятком інтерактивних частин
denfromufa

1
@denfromufa На жаль, Github відключає Mathjax, тому математика також не надається. Це робить його досить марним для більшості відповідних сфер. Але завжди є nbviewer.
Девід Кетчесон

Відповіді:


17

Ну, я думаю, у вас є кілька варіантів.

  1. Якщо у вас є стабільна сторінка - наприклад, така, яку спонсорує університет чи інша неприбуткова установа, яка навряд чи зникне незабаром - ви можете опублікувати там.
  2. Ви можете використовувати таку службу, як Github або Bitbucket або SourceForge для розповсюдження коду.
  3. Якщо код має граничне загальне значення (це код аналізу для певного набору умов тощо), ви можете зробити код доступним як завантаження "додаткової інформації" разом із тим папером, в якому ви його використовуєте.
  4. Ви можете використати комбінацію перерахованого вище.

Однак у будь-якому або всіх цих випадках слід чітко вказати джерело в статті та вказати, який саме тип ліцензування (GPL, Creative Commons тощо), щоб не виникало проблем, пов’язаних із ІР.


6
Я думаю, що слід поставити свій код у найбільш вірогідному місці, щоб вижити, і в багатьох місцях, якщо це можливо. Сторінки університетських видань, мабуть, менше виживають, ніж, наприклад, послуги хостингу. Наявність журналу також може зробити знімок доступним. На жаль, жоден журнал, про який я знаю, не займається репост-хостингом.
Faheem Mitha

1
Студент, мабуть, не повинен розміщувати програмне забезпечення на особистій домашній сторінці; однак я можу стверджувати, що для типового коду дослідження, мабуть, можна отримати більше, поширивши його на сторінці, пов’язаній із дослідницькою групою, ніж на зовнішній сторінці, де атрибуція, ймовірно, буде втрачена. Що стосується журналів, то це правда, що вони не займаються хостингом сховищ. Однак, можливість мати "додаткову інформацію" у формі дослідницького коду, я думаю, задовольняє більшість вимог відповідальної розробки наукового програмного забезпечення. (Якщо потрібно.)
aeismail

Я відчуваю, що сторінки університетів швидше загубляться, ніж звичайні хостинг-сайти. Звичайно, більшість популярних сьогодні хостинг-сайтів (Bitbucket, Github, Google Code) вже давно не існують. З іншого боку, наприклад, Sourceforge існує вже деякий час.
Faheem Mitha

Є й інші питання, про які слід пам’ятати; Проблеми щодо інтелектуальної власності та правила університету чи уряду можуть також контролювати вибір сховищ. Але контраргументом є те, що існує ряд кодів ( NAMD - один з головних прикладів), які успішно поширюються на сайтах, що належать університету. Загалом, «значимість» коду визначатиме, наскільки він видимий. Я сумніваюся, що код, який розробляє значну базу користувачів, коли-небудь повністю зникне.
aeismail

1
Щоправда, але якщо код незрозумілий, це не означає, що це нормально, якщо він зникає. І можна сподіватися, що більшість наукових кодексів будуть під вільною ліцензією та без необґрунтованих обмежень. Я вважаю, що, наприклад, нинішнє міністерство вимагає цього працювати за гроші, розроблені з грошима платників податків. Я думаю, що це має стосуватися всіх проектів, що фінансуються платниками податків.
Faheem Mitha

8

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

Доповнення до журналів на веб-сайтах університетів не є стійкими

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

На жаль, виявляється, що журнали не допомагають краще підтримувати свої додаткові матеріали (див. Anderson et al. 2006 ) і, можливо, не приймають необхідних форматів або взагалі приймають додаткові матеріали (див. Один помітний приклад ).

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

Рішення багатьох примірників?

Github та пов'язані з ними сайти ще не довели довголіття протягом масштабів 100-х років, досягнутих університетськими бібліотеками та створеними видавцями. Шляхом сприяння широкому розповсюдженню, це може забезпечити рішення інших відгуків у коментарях, включаючи одного, хто не міг коментувати зміну stackexchange,

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

- Томас Джефферсон, 18 лютого 1791 року

Figshare та стандарт CLOCKSS

Єдиний архівний стандарт, про який я знаю, - це figshare , який може прийняти повні сховища коду (як "набори файлів" на даний момент, але, я вважаю, незабаром з'явиться можливість вказати як тип "код"). Ключовим елементом є не лише посилання на DOI з програмними метаданими, але резервна копія архівної служби CLOCKSS , яка зберігає копії всього її вмісту у 12 географічно та геополітично розподілених вузлах по всьому світу. Якщо фігура припинить свою діяльність або припинить своє існування, це призведе до того, що весь її вміст буде вільно доступний у CLOCKSS.

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


1
figshare - це великий крок вперед, хоча ліцензія CC-BY не є ліцензією на програмне забезпечення, і я не знаю, скільки вчених готові випустити свій код під CC0, тому це питання потрібно вирішити. Я ціную, що вони використовують DOI та CLOCKSS, хоча це чудово.
Арон Ахмадія

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

Код Google може бути дещо кращим для широкої аудиторії, оскільки у вас може бути приємніша веб-сторінка із підсумками, зображеннями, DOI-посиланням, більшою видимістю у пошуку тощо. Ви обов'язково потрібно ввести tgz у розділі Завантажити та надати посилання на головній сторінці. Пам'ятайте, що більшість не розробників навіть не знайомі з контролем версій, не кажучи вже про git / hg. Субверсія - це настільки, наскільки я б пішов для широкої аудиторії.
stali

1
@stali нагадаємо, що github також підтримує власні веб-сторінки для сховищ через gh-сторінки та завантажувані тарболи із завантажень. Але ні Google, ні Github не надають окремого DOI для коду, а також не вирішують архівне довголіття поза життям компанії afaik.
cboettig

4

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


Дуже круто! Я не знав, що LaTeX може це зробити.
квіте

4

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

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

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


1
+1 для ActivePapers. Я не думаю, що це відповідає моїм потребам, але я радий бачити, хто працює над рішенням!
Девід Кетчесон

figshare надає DOI: див. figshare.com/blog/…
Джеромі Англім

3

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

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

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


2

Погляньте на http://www.runmycode.org . Вони розміщують супутні сайти для коду, пов'язаного з науково-дослідними роботами. Якщо код R, Matlab або декілька інших, він фактично запустить код для вас. Я ще цього не пробував, але маю намір. Я думаю, що Девід Доного та його співробітники використовують це.


Ага. Ви вже користувались цим. runmycode.org/CompanionSite/site.do?siteId=158
Павло Г. Костянтин

@David Ketcheson і я також провели експеримент у грудні, використовуючи стеки wakari.io та ноутбуки IPython для одного з наших кодів на основі Python. Ви можете ознайомитись із зошитами про відтворення PyClaw тут .
Арон Ахмадія

0

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


-2

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


4
Це цікава точка зору, і мені цікаво побачити, наскільки це поширене. Особисто я це намагаюся відійти. Я відчуваю, що це як публікація неповного паперу та вимагати від читачів запитання про повну річ. Дивіться sciencecodemanifesto.org .
Девід Кетчесон

2
Маючи контактну адресу одного з моїх найвидатніших праць, по суті, мертвий - і не впевнений у деяких інших - я, як правило, проти цього як рішення. "Зв'язок зі мною" - це не обов'язково найпростіша річ у світі - особливо через десятиліття.
Фоміт

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

3
Емпіричні дослідження, що фактично стосуються автора та запитують дані, навіть коли автор підписує ліцензійну угоду про надання її за запитом, показали, що на подив мало дотримуються авторів. Наприклад, див. Dx.doi.org/10.1371/journal.pone.0007078 та цитати в них. Якщо це не працює добре для даних, я підозрюю, що це не гарне рішення для коду.
cboettig
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.