코드를 발행물에 연결하는 방법


40

과학 컴퓨팅 (및 오늘날 많은 다른 분야)의 학술 논문은 일반적으로 해당 논문을 위해 특별히 작성되었거나 논문의 결과를 얻는 데 사용 된 일부 코드 또는 전체 소프트웨어 패키지를 포함합니다. 논문 독자가 코드에 액세스하도록 돕는 가장 좋은 방법은 무엇입니까? 내 현재 접근 방식은 논문 또는 인용에 Github 저장소 (특정 버전 태그와 함께)에 대한 링크를 넣는 것입니다.


2
코드를 공유하는 것은 좋은 생각이며 더 많은 것을해야합니다. 종이에 관련 코드를 제공하는 것이 더 나을 수 있다는 것을 알고 있습니다. Github 저장소는 좋은 솔루션처럼 보입니다. 필자는 부록에 소스 코드를 포함시키는 것보다 훨씬 낫습니다.
Barron

4
이것은 관련 MO 질문입니다.
JM

@ JM 감사합니다, MO에 대한 답변은 매우 좋습니다!
David Ketcheson

참고 당신은 GitHub의에 노트북을 ipython 게시 할 수 있으며 렌더링되는, 상호 작용하는 부분을 제외하고
denfromufa

1
@denfromufa 불행히도, Github는 Mathjax를 비활성화하므로 수학도 렌더링되지 않습니다. 그것은 대부분의 관련 분야에서 꽤 쓸모가 없습니다. 그러나 항상 nbviewer가 있습니다.
David Ketcheson

답변:


17

글쎄, 몇 가지 옵션이 있다고 생각합니다.

  1. 대학이나 다른 비영리 기관이 후원하는 페이지처럼 곧 사라질 가능성이없는 안정적인 페이지가있는 경우 해당 페이지를 게시 할 수 있습니다.
  2. Github, Bitbucket 또는 SourceForge와 같은 서비스를 사용하여 코드를 배포 할 수 있습니다.
  3. 코드가 한계가없는 일반 값 (특정 조건 집합에 대한 분석 코드 등) 인 경우 코드를 사용하는 용지와 함께 "보조 정보"다운로드로 사용할 수 있습니다.
  4. 위의 일부 조합을 사용할 수 있습니다.

그러나 이러한 경우에 모두 소싱을 명확하게 표시하고 라이센스 종류 (GPL, Creative Commons 등)를 표시하여 IP 관련 문제가 발생하지 않도록해야합니다.


6
나는 생존하기 가장 쉬운 곳에, 그리고 가능한 경우 여러 곳에 코드를 넣어야한다고 생각합니다. 예를 들어 대학 페이지는 서비스 호스팅보다 생존 가능성이 낮습니다. 저널이 일부 스냅 샷을 사용할 수있게하는 것도 의미가 있습니다. 불행히도, 내가 아는 저널은 repos 호스팅을하지 않습니다.
Faheem Mitha

1
학생은 개인 홈페이지에 소프트웨어를 설치해서는 안됩니다. 그러나 일반적인 리서치 코드의 경우 속성이 손실 될 가능성이있는 외부 페이지보다 리서치 그룹과 관련된 페이지에 코드를 배포하면 더 많은 이점을 얻을 수 있다고 주장합니다. 저널은 저장소 호스팅을 수행하지 않는 것이 사실입니다. 그러나 연구 코드의 형태로 "보충 정보"를 갖는 능력은 책임있는 과학적 소프트웨어 개발의 요구 사항을 대부분 만족 시킨다고 생각합니다. (필요한 경우)
aeismail

내 생각에 대학 페이지는 일반 호스팅 사이트보다 길을 잃을 가능성이 높습니다. 물론 오늘날 인기있는 호스팅 사이트 (Bitbucket, Github, Google Code)는 그다지 오래되지 않았습니다. 다른 한편으로, 소스 포지 (Sourceforge)는 한동안 주변에있었습니다.
Faheem Mitha

알아야 할 다른 문제가 있습니다. IP 우려와 대학 또는 정부 규정에 따라 리포지토리 선택이 제어 될 수 있습니다. 그러나 반박 론 은 대학 소유 사이트에 성공적으로 배포 된 많은 코드 ( NAMD 가 하나의 주요 예)가 있다는 것입니다. 일반적으로 코드의 "의의"는 코드의 가시성을 결정합니다. 중요한 사용자 기반을 개발하는 코드가 완전히 사라질지 의심됩니다.
aeismail 2018 년

1
사실이지만 코드가 명확하지 않다고해서 사라지는 것은 괜찮다는 의미는 아닙니다. 그리고 대부분의 과학 코드가 무료 라이센스하에 있고 부당한 제한없이 사용되기를 바랍니다. 예를 들어 NIH는 현재 NIH (납세자) 돈으로 개발 된 작업에 대해이 명령을 의무화하고 있다고 생각합니다. 나는 이것이 모든 납세자 자금 지원 프로젝트의 경우라고 생각합니다.
Faheem Mitha

8

훌륭한 질문과 큰 답변이지만, 목표 자체가 출판 자체에 부여 된 동일한 표준을 달성하는 것이라면 지속성 문제를 적절하게 다루는 사람은 없다고 생각합니다. ( 코드가 여전히 실행될 가능성은 어리석은 일이지만 적어도 발행물만큼이나 유용 할 수는 있습니다).

대학 웹 사이트 저널 보충제가 영구적이지 않습니다

대학 웹 사이트는 호스팅 된 콘텐츠를 보존하기 위해 안정성이나 중복성을 제공하지 않을 것입니다. 인용하기가 더 어려우며 일반적으로 컴퓨터에서 읽을 수있는 메타 데이터가 없습니다.

불행히도 저널이 보충 자료를 유지 관리하는 데 훨씬 나아지지 않은 것으로 보이며 ( Anderson et al. 2006 참조 ), 필요한 형식을 받아들이지 않거나 보충 자료를 전혀 받아들이지 않을 수도 있습니다 ( 하나의 주목할만한 예 참조 ).

이러한 이유로 데이터의 장기 보관에 관심이있는 사람들 은 만장일치로 웹 사이트 나 보충 자료가 아닌 전용 리포지토리의 사용을 옹호하는 방향으로 향하고 있으며 많은 저널 이이 관행을 의무화하고 있습니다 . 코드가이 표준을 준수한다는 것은 공정한 것 같습니다.

많은 사본의 해결책?

Github 및 관련 사이트는 아직 대학 도서관 및 기존 출판사에 의해 달성 된 100 년 규모의 장수를 증명하지 못했습니다. 광범위한 배포를 촉진함으로써 스택 교환에 대해 언급 할 수없는 한 동료를 포함하여 다른 사람들이 의견에 에코 한 솔루션을 제공 할 수 있습니다.

... 우리가 남은 것을 저장합시다 : 공공의 눈으로부터 그것들을 차단하고 그것들을 시간 낭비에 위탁하는 데 사용하는 금고와 자물쇠가 아니라 사고의 범위를 넘어서게하는 복사의 곱셈에 의해.

— 토머스 제퍼슨, 1791 년 2 월 18 일

Figshare & CLOCKSS 표준

내가 아는 유일한 아카이브 표준은 figshare입니다 . 이것은 전체 코드 리포지토리 (현재 "파일 세트"로 수용 할 수 있지만 곧 "코드"유형으로 나열 될 수있는 옵션을 갖게 될 것입니다)입니다. 그림 공유의 핵심은 프로그래밍 방식의 메타 데이터가있는 인용 가능한 DOI뿐만 아니라 CLOCKSS 보관 서비스 의 지원 으로 모든 콘텐츠의 사본을 전 세계적으로 지리적으로 지리적으로 분산 된 12 개의 노드에 유지합니다. figshare가 중단되거나 존재하지 않으면 CLOCKSS에서 모든 컨텐츠를 자유롭게 사용할 수 있습니다.

결과적으로 코드 배포에 Github을 사용하는 것이 좋으며 게시 시점에 figshare에 보관 사본을 제공하는 것이 좋습니다.


1
CC-BY 라이센스는 소프트웨어 라이센스가 아니지만, figshare는 큰 발전입니다. 그리고 얼마나 많은 과학자들이 CC0에 따라 코드를 발표 할 의사가 있는지 모르겠 기 때문에이 문제를 해결해야합니다. 그러나 그들은 DOI와 CLOCKSS를 사용한다는 점에 감사합니다.
Aron Ahmadia

예, 라이센스가 여전히 문제가 많다는 점, 특히보다 완전하게 개발 된 소프트웨어의 경우 더욱 그렇습니다. 스크립트가 분석을 복제하기 위해 CC0이 더 적합하다는 것을 알 수있었습니다.
cboettig

Google 코드는 요약, 이미지, DOI 링크, 검색시 가시성 등을 갖춘 더 좋은 웹 페이지를 가질 수 있으므로 더 많은 청중에게 약간 더 나을 수 있습니다. 다운로드 섹션에 tgz를 입력하고 첫 페이지에 링크를 제공해야합니다. 개발자가 아닌 대다수는 git / hg는 물론 버전 제어에 익숙하지도 않습니다. Subversion은 더 많은 사람들을 위해 갈 것입니다.
stali

1
@stali는 github이 gh-pages 및 다운로드에서 다운로드 가능한 tarball을 통해 리포지토리에 대한 사용자 정의 웹 페이지를 지원한다는 것을 기억합니다 . 그러나 Google과 Github 은 코드에 대해 별도의 DOI를 제공 하지 않으며 회사의 수명을 넘어서 보관 수명을 해결하지도 않습니다.
cboettig

4

멋진 pdf 기술을 사용하여 코드를 pdf에 간단하게 첨부 할 수 있습니다 (즉, 코드 파일은 pdf에 포함되어 있으며 pdf의 일부 단추를 클릭하여 "다운로드"할 수 있습니다). 이것은으로 수행 할 수 있습니다 attachfile의 예를 들어, 패키지. 물론, 이것은 preprints와 함께 작동하지만 (arxiv에서 이미 작동하는지는 모르겠지만) 저널 파일에 문제가있을 수 있습니다 ...


아주 멋지다! LaTeX가 이것을 할 수 있다는 것을 몰랐습니다.
qubyte

4

특정 연구 프로젝트에 특화된 작은 스크립트의 경우 논문의 "보충 정보"와 같이 저널의 웹 사이트가 가장 좋습니다. 그곳에서 기사를 읽는 사람이 가장 쉽게 찾을 수 있습니다.

다른 프로젝트에도 관심이있는보다 실질적인 패키지는 별도로 게시하는 것이 좋습니다. 불행히도 현재로서는 좋은 해결책이 없습니다. 이상적으로, 코드 발행물은 종이처럼 DOI를 통해 영구적으로 액세스 할 수 있지만 DOI를 배포하고 그 영속성을 보장하는 호스팅 사이트는 알지 못합니다. Github 또는 Bitbucket과 같은 공개 리포지토리가 아마도 가장 좋은 방법 일 것입니다.

가장 좋은 해결책은 코드와 함께 제공되는 종이와 함께 제공되는 종이를 게시하는 것이지만 아직 기술적으로는 불가능합니다. 이 아이디어를 탐구하는 연구 프로토 타입을 연구 중 입니다. 자세한 내용 은 이 사이트 를 참조하십시오.


1
ActivePapers의 경우 +1 나는 그것이 내 요구를 충족시키지 못한다고 생각하지만 누군가가 솔루션을 개발하는 것을 보게되어 기쁩니다!
David Ketcheson

DOI를가 figshare 제공 : 참조 figshare.com/blog/...을
제로미 Anglim

3

대학 변경이 곧 이루어질 것으로 예상되어 대학의 URL이 가장 안정적이지 않기 때문에 두 가지 전술을 택했습니다.

코드가 상대적으로 짧을 때 논문과 코드를 거의 같은 위치에 유지하는 적절한 작업을 수행한다는 가정하에 저널 자체에 보충 부록으로 포함시켜 보았습니다. 이것은 특히 일반적인 관심이없는 코드에 특히 유용합니다. 문맥을 제공하기 위해 문제의 논문이 없으면 다소 쓸모없는 코드입니다.

그러나 소스 코드, 실제 소프트웨어 및보다 복잡한 프로젝트 또는 일반적인 관심사를 위해 GitHub 리포지토리에 연결하는 전술을 따르고 있습니다.


2

http://www.runmycode.org보십시오 . 그들은 연구 논문과 관련된 코드를위한 동반자 사이트를 호스트합니다. 코드가 R, Matlab 또는 다른 코드 인 경우 실제로 코드가 실행됩니다. 아직 시도하지는 않았지만 그럴 생각입니다. David Donoho와 그의 공동 작업자가이를 사용한다고 생각합니다.



@David Ketcheson과 저는 12 월에 wakari.io 스택과 IPython 노트북을 사용하여 Python 기반 코드 중 하나를 실험했습니다. 여기 에서 PyClaw 재현 노트북을 확인할 수 있습니다 .
Aron Ahmadia

0

대학 도서관은이 곳이나 대학의 호스팅 센터가 될 수 있습니다.


-2

독자로서, 논문에 저자에게 직접 연락하여 코드를 얻을 수 있다는 효과에 대한 진술이 효과적입니다. 저자는 공동 작업을 촉진하고 사람들이 작업에 코드를 사용하는 경우 내 기사를 인용하도록 상기시킬 수 있습니다.


4
그것은 흥미로운 관점이며, 그것이 얼마나 흔한 지 궁금합니다. 개인적으로, 그것은 내가 도망치려는 것입니다. 나는 불완전한 논문을 출판하고 독자들에게 모든 것을 요구하는 것과 같다고 생각합니다. sciencecodemanifesto.org를 참조하십시오 .
David Ketcheson

2
저의 가장 저명한 논문 중 하나의 연락처 주소가 본질적으로 죽었고 다른 사람들에 대해 확신이없는 경우에는 일반적으로 해결책으로 반대합니다. "나에게 연락하는 것"이 ​​세상에서 가장 쉬운 일은 아니지만, 특히 10 년 후가 아닙니다.
Fomite

2
"문의"방법은 재현성을 보장하지 않습니다. 일부 코드를 요청하는 연락을 받으면 원래 용지에 사용 된 버전이 아닌 최신 버전을 보내드립니다. 더 이상 원본 버전이 없기 때문에.
khinsen

3
저자가 요청시이를 제공하기 위해 라이센스 계약에 서명 한 경우에도 실제로 저자에게 연락하고 데이터를 요구하는 실증적 연구에 따르면 놀랍게도 저자가 거의 없음을 알 수 있습니다. 예를 들어, dx.doi.org/10.1371/journal.pone.0007078 및 인용문을 참조하십시오 . 이것이 데이터에 대해 잘 작동하지 않으면 코드에 대한 좋은 해결책이 아니라고 생각합니다.
cboettig
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.