পাইথন ব্যবহার করে পুনরুত্পাদনযোগ্য ডেটা বিজ্ঞানের জন্য সরঞ্জাম এবং প্রোটোকল


50

আমি পাইথন ব্যবহার করে একটি তথ্য বিজ্ঞান প্রকল্পে কাজ করছি। প্রকল্পের বিভিন্ন ধাপ রয়েছে। প্রতিটি পর্যায়ে পাইথন স্ক্রিপ্ট, সহায়ক ডেটা, কনফিগারেশন এবং প্যারামিটার ব্যবহার করে এবং অন্য একটি ডেটা সেট তৈরি করে একটি ডেটা সেট নেওয়া থাকে। আমি কোডটি গিটে সংরক্ষণ করি, যাতে সেই অংশটি coveredাকা থাকে। আমি শুনতে চাই:

  1. ডেটা সংস্করণ নিয়ন্ত্রণের জন্য সরঞ্জাম।
  2. সরঞ্জামগুলি পর্যায় এবং পরীক্ষার পুনরুত্পাদন করতে সক্ষম করে।
  3. এই জাতীয় প্রকল্পের জন্য প্রোটোকল এবং প্রস্তাবিত ডিরেক্টরি কাঠামো।
  4. স্বয়ংক্রিয় বিল্ড / রান সরঞ্জামসমূহ run

2
এই প্রশ্নে প্রশ্নটি কোথায় ? দয়া করে সহায়তা কেন্দ্রের নির্দেশিকাগুলি পর্যালোচনা করার জন্য কিছুক্ষণ সময় নিন , বিশেষত: "যদি প্রশ্ন জিজ্ঞাসার জন্য আপনার অনুপ্রেরণা হয় 'আমি ______' সম্পর্কে একটি আলোচনায় অংশ নিতে চাই তবে আপনি এখানে জিজ্ঞাসা করবেন না।"
এয়ার

"আপনার মুখোমুখি প্রকৃত সমস্যাগুলির ভিত্তিতে আপনার কেবল ব্যবহারিক, উত্তরযোগ্য প্রশ্ন জিজ্ঞাসা করা উচিত" "
ইউভাল এফ

এটি ব্যবহারিক, জবাবদিহিযোগ্য এবং বাস্তব সমস্যাটির উপর ভিত্তি করে একইভাবে "ডেটা সায়েন্স কীভাবে সম্পাদন করতে হবে তা আমাকে বলুন" ব্যবহারিক, জবাবদিহিযোগ্য এবং একটি বাস্তব সমস্যার উপর ভিত্তি করে।
এয়ার এয়ার

উত্তর:


46

বিষয় পুনরায় উত্পাদন গবেষণা (আরআর) হল খুব জনপ্রিয় আজ এবং, অতএব, হয় বিশাল , কিন্তু আমি আশা করি যে আমার উত্তর হবে যথেষ্ট ব্যাপক একটি উত্তর এবং জন্য যথেষ্ট তথ্য প্রদান করবে আরো গবেষণার , তাই আপনাকে কাজ করার সিদ্ধান্ত নেন করা উচিত নয়।

আর আর এর জন্য পাইথন-নির্দিষ্ট সরঞ্জামগুলি অবশ্যই সেখানে উপস্থিত রয়েছে বলে আমি মনে করি যে আরও ইউনিভার্সাল সরঞ্জামগুলিতে মনোনিবেশ করা আরও বোধগম্য হয়েছে (আপনি ভবিষ্যতে কী প্রোগ্রামিং ভাষা এবং কম্পিউটিং পরিবেশ নিয়ে কাজ করবেন তা নিশ্চিতভাবে জানেন না)। এটি বলার পরে, আসুন একনজরে দেখে নেওয়া যাক আপনার তালিকায় কি কি সরঞ্জাম উপলব্ধ।

1) ডেটা সংস্করণ নিয়ন্ত্রণের জন্য সরঞ্জাম । আপনি যদি (খুব) বড় ডেটা নিয়ে কাজ করার পরিকল্পনা না করেন তবে আমার ধারনা, gitআপনি সোর্স কোড সংস্করণ নিয়ন্ত্রণের জন্য যা ব্যবহার করেন তা একইভাবে ব্যবহার করা বোধগম্য হবে । ইতিমধ্যে অবকাঠামো রয়েছে। এমনকি যদি আপনার ফাইলগুলি বাইনারি এবং বড় হয় তবে এই পরামর্শটি সহায়ক হতে পারে: https://stackoverflow.com/questions/540535/manasing-large-binary-files-with-git

2) আরআর ওয়ার্কফ্লো এবং পরীক্ষা নিরীক্ষণের জন্য সরঞ্জামগুলি । আমার জ্ঞানের সেরাটি (জনপ্রিয়তার উত্থানের ক্রমে) এই বিভাগে সর্বাধিক জনপ্রিয় সরঞ্জামগুলির তালিকা এখানে রয়েছে:

  • Taverna ওয়ার্কফ্লো ম্যানেজমেন্ট সিস্টেম ( http://www.taverna.org.uk ) - খুব শক্ত, যদি সামান্য জটিল হয় তবে সরঞ্জামগুলির সেট। প্রধান সরঞ্জামটি একটি জাভা ভিত্তিক ডেস্কটপ সফ্টওয়্যার। তবে এটি অনলাইন ওয়ার্কফ্লো রিপোজিটরি পোর্টাল মাই এক্সপারমেন্ট ( http://www.myexperiment.org ) এর সাথে সামঞ্জস্যপূর্ণ , যেখানে ব্যবহারকারীরা তাদের আরআর ওয়ার্কফ্লোগুলি সঞ্চয় এবং ভাগ করতে পারবেন। ওয়েবভিত্তিক আরআর পোর্টাল, তাবারনার সাথে পুরোপুরি সামঞ্জস্যপূর্ণ বলা হয় তাবারনা অনলাইন , তবে এটি রাশিয়ায় সম্পূর্ণ ভিন্ন সংস্থা দ্বারা বিকাশ ও রক্ষণাবেক্ষণ করা হচ্ছে (সেখানে অনলাইনএইচপিসি : http://onlinehpc.com হিসাবে উল্লেখ করা হয়েছে )।

  • কেপলার প্রকল্প ( https://kepler-project.org )

  • ভিসট্রেইলস ( http://vistrails.org )

  • মাদাগাস্কার ( http://www.reproducibility.org )

উদাহরণকেপলার এবং মাই এক্সপেরিমেন্ট প্রকল্পগুলি ব্যবহারের উপর ভিত্তি করে রিয়েল ওয়ার্কফ্লো ডিজাইন এবং ডেটা বিশ্লেষণের উদাহরণ সহ বৈজ্ঞানিক কর্মপ্রবাহের উপর একটি আকর্ষণীয় নিবন্ধ এখানে রয়েছে : http://f1000research.com/articles/3-110/v1

অনেকগুলি আরআর সরঞ্জাম রয়েছে যা সফ্টওয়্যার পরিবার দ্বারা অনুকরণিত সাক্ষর প্রোগ্রামিং দৃষ্টান্ত প্রয়োগ করে LaTeX। প্রতিবেদন তৈরি এবং উপস্থাপনে সহায়তা করে এমন সরঞ্জামগুলিও একটি বড় বিভাগ, যেখানে Sweaveএবং knitrসম্ভবত সবচেয়ে সুপরিচিত known Sweaveএটি একটি সরঞ্জাম, আর এর উপর দৃষ্টি নিবদ্ধ করে তবে এটি পাইথন-ভিত্তিক প্রকল্পগুলির সাথে একীভূত হতে পারে, কিছু অতিরিক্ত প্রচেষ্টা সত্ত্বেও ( https://stackoverflow.com/questions/2161152/sweave-for-python )। আমি মনে করি এটি knitrএকটি আরও ভাল বিকল্প হতে পারে, কারণ এটি আধুনিক, জনপ্রিয় সরঞ্জামগুলির (যেমন RStudio) এর ব্যাপক সমর্থন রয়েছে এবং এটি ভাষা-নিরপেক্ষ ( http://yihui.name/knitr/demo/engines )।

3) প্রোটোকল এবং প্রস্তাবিত ডিরেক্টরি কাঠামো । আপনি যদি শব্দটি প্রোটোকল ( ওয়ার্কফ্লো ) ব্যবহার করে যা বোঝাতে চেয়েছিলেন তা যদি আমি সঠিকভাবে বুঝতে পারি তবে সাধারণত আমি মনে করি যে স্ট্যান্ডার্ড আরআর ডেটা বিশ্লেষণ কর্মপ্রবাহে নিম্নলিখিত অনুক্রমিক পর্যায়গুলি রয়েছে: ডেটা সংগ্রহ => ডেটা প্রস্তুতি (পরিষ্কার, রূপান্তর, মার্জিং, নমুনা) => ডেটা বিশ্লেষণ => ফলাফল উপস্থাপনা (উত্পন্ন প্রতিবেদন এবং / বা উপস্থাপনা)। তবুও, প্রতিটি কর্মপ্রবাহ প্রকল্প-নির্দিষ্ট এবং এইভাবে কিছু নির্দিষ্ট কাজের জন্য অতিরিক্ত পদক্ষেপ যুক্ত করার প্রয়োজন হতে পারে।

নমুনা ডিরেক্টরি কাঠামোর জন্য, আপনি বিশ্লেষণ কর্মপ্রবাহ এবং প্রকল্পগুলি স্বয়ংক্রিয় করার চেষ্টা হিসাবে আর প্যাকেজ ProjectTemplate( http://projecttemplate.net ) এর জন্য ডকুমেন্টেশনগুলি একবার দেখে নিতে পারেন :

এখানে চিত্র বর্ণনা লিখুন

4) স্বয়ংক্রিয় বিল্ড / রান সরঞ্জামসমূহ । যেহেতু আমার উত্তরটি সর্বজনীন (ভাষা-নিরপেক্ষ) আরআর সরঞ্জামগুলিতে ফোকাস করেছে, তাই সর্বাধিক জনপ্রিয় সরঞ্জাম makemakeপছন্দসই আরআর ওয়ার্কফ্লো অটোমেশন সরঞ্জাম হিসাবে ব্যবহার করার জন্য কিছু কারণের জন্য নিম্নলিখিত নিবন্ধটি পড়ুন : http://bost.ocks.org/mike/make । অবশ্যই অন্যান্য অনুরূপ সরঞ্জাম রয়েছে, যা হয় কিছু দিক উন্নত করে makeবা কিছু অতিরিক্ত বৈশিষ্ট্য যুক্ত করে। উদাহরণস্বরূপ: ant(আনুষ্ঠানিকভাবে, অ্যাপাচি আন্ত: http://ant.apache.org ), Maven("পরবর্তী প্রজন্ম ant": http://maven.apache.org ), rake( https://github.com/ruby/rake ) , Makepp( http://makepp.sourceforge.net)। এই জাতীয় সরঞ্জামের একটি বিস্তৃত তালিকার জন্য, উইকিপিডিয়া: http://en.wikedia.org/wiki/List_of_build_automation_software দেখুন


সাক্ষরতা প্রোগ্রামিং সম্পর্কে এখানে একটি লিঙ্ক : মূলত, এটি যথেষ্ট কোড মন্তব্য করার বিষয়ে যাতে কোডটি একটি স্বতন্ত্র ডকুমেন্টেশন হয়।
চমত্কার

@ গাবরোস: আমি সাক্ষরিত প্রোগ্রামিংয়ের অর্থ সম্পর্কে সচেতন এবং দৃষ্টান্তের সাথে কোনও লিঙ্ক অন্তর্ভুক্ত করি নি, কারণ এর জন্য অনেক উত্স রয়েছে এবং সেগুলি খুঁজে পাওয়া খুব সহজ। তবুও, আপনার মন্তব্যের জন্য আপনাকে ধন্যবাদ।
আলেকসান্দ্র ব্লেক

1
আমি অনুমান করেছি, সে কারণেই আমি আগ্রহী পাঠকের জন্য মন্তব্য হিসাবে এই তথ্যটি যুক্ত করেছি :)
চমত্কার

4
এটি একটি বিস্তৃত উত্তর, তবে আমি অবাক হয়েছি যে একটি দিক অনুপস্থিত বলে মনে হচ্ছে। ক্রস বৈধকরণ বেশিরভাগ ডিএস প্রকল্পের একটি অত্যাবশ্যক উপাদান এবং সাধারণত একটি এলোমেলো নমুনার প্রয়োজন হয়, যা পুনরুত্পাদনকে কঠিন করে তুলতে পারে। আমি প্রস্তাব দিচ্ছি যে পরিসংখ্যানগত ভিন্নতা নির্বিশেষে ফলাফল পুনরুত্পাদন করতে সক্ষম হতে আপনি এলোমেলোভাবে জেনারেটরগুলির জন্য একই বীজটি ব্যবহার করার জন্য স্পর্শ করুন। ধন্যবাদ!
AN6U5

@ এএন 6 ইউ 5: সদয় শব্দগুলির জন্য আপনাকে ধন্যবাদ! আমি সম্মত হই - আমি সেই দিকটি মিস করেছি (+1)। ক্রস-বৈধতা সম্পর্কিত প্রাসঙ্গিক সংক্ষিপ্ত তথ্য যোগ করে, আমার উত্তর আপডেট করতে দ্বিধা বোধ করবেন না।
আলেকসান্দ্র ব্লেক

23

যেহেতু আমি একাডেমিয়ায় গবেষণা শুরু করেছি আমি ক্রমাগত একটি সন্তোষজনক কর্মপ্রবাহ খুঁজছিলাম। আমি মনে করি যে অবশেষে আমি এমন কিছু পেয়েছি যার সাথে আমি খুশি:

1) সবকিছু সংস্করণ নিয়ন্ত্রণে রাখুন, যেমন: গিট:

শখের গবেষণা প্রকল্পগুলির জন্য আমি গিটহাব ব্যবহার করি, কর্মক্ষেত্রে গবেষণার জন্য আমি আমাদের বিশ্ববিদ্যালয় সরবরাহিত ব্যক্তিগত গিটল্যাব সার্ভারটি ব্যবহার করি। আমি আমার ডেটাসেটগুলি সেখানে রাখি।

2) আমি আইপিথন নোটবুকগুলিতে ডকুমেন্টেশন সহ আমার বেশিরভাগ বিশ্লেষণ করি। কোড, প্লট এবং আলোচনা / উপসংহার সবই একটি ডকুমেন্টে রাখার জন্য এটি খুব সুসংহত (যদি আমি বড় স্ক্রিপ্টগুলি চালাচ্ছি তবে আমি সাধারণত সেগুলি পৃথক স্ক্রিপ্ট .py ফাইলগুলিতে রেখে দিতাম, তবে আমি এখনও তাদের সম্পাদন করব) আইপিথন নোটবুক থেকে উদ্দেশ্য, ফলাফল এবং অন্যান্য পরামিতি সম্পর্কে তথ্য যুক্ত করতে% रन ম্যাজিকের মাধ্যমে

আইপিথন এবং আইপিসন নোটবুকগুলির জন্য আমি একটি ছোট সেল-ম্যাজিক এক্সটেনশন লিখেছি, "ওয়াটারমার্ক" যা আমি সুবিধামতভাবে সময় স্ট্যাম্পগুলি তৈরি করতে এবং আমার ব্যবহৃত বিভিন্ন প্যাকেজ সংস্করণ এবং গিট হ্যাশগুলি নজর রাখার জন্য ব্যবহার করি

উদাহরণ স্বরূপ


%watermark

29/06/2014 01:19:10

CPython 3.4.1
IPython 2.1.0

compiler   : GCC 4.2.1 (Apple Inc. build 5577)
system     : Darwin
release    : 13.2.0
machine    : x86_64
processor  : i386
CPU cores  : 2
interpreter: 64bit


%watermark -d -t

29/06/2014 01:19:11 


%watermark -v -m -p numpy,scipy

CPython 3.4.1
IPython 2.1.0

numpy 1.8.1
scipy 0.14.0

compiler   : GCC 4.2.1 (Apple Inc. build 5577)
system     : Darwin
release    : 13.2.0
machine    : x86_64
processor  : i386
CPU cores  : 2
interpreter: 64bit

আরও তথ্যের জন্য ডকুমেন্টেশন এখানে দেখুন


2
আমি জলছবি যাদু পছন্দ। যারা অচেতন তাদের জন্য, গিটহাব এখন একাডেমিক প্রতিষ্ঠানের সাথে যুক্ত ব্যবহারকারীদের জন্য 5 টি পর্যন্ত নিখরচায় বেসরকারী সংগ্রহস্থল সরবরাহ করে।
বগাট্রন

19

সেরা পুনরুত্পাদনযোগ্যতা সরঞ্জামটি হ'ল আপনার ক্রিয়াকলাপগুলির লগ তৈরি করা, এরকম কিছু:

experiment/input ; expected ; observation/output ; current hypothesis and if supported or rejected
exp1 ; expected1 ; obs1 ; some fancy hypothesis, supported

এটি কোনও কাগজে লেখা যেতে পারে, তবে, যদি আপনার পরীক্ষাগুলি একটি গণনামূলক কাঠামোর সাথে ফিট করে তবে আপনি সেই লগিং প্রক্রিয়াটি আংশিক বা সম্পূর্ণ স্বয়ংক্রিয় করতে গণ্য সরঞ্জামগুলি ব্যবহার করতে পারেন (বিশেষত আপনাকে যে ইনপুট ডেটাসেটগুলি বিশাল হতে পারে তা ট্র্যাক করতে সহায়তা করে এবং আউটপুট পরিসংখ্যান)।

স্বল্প শিক্ষার বক্ররেগ সহ পাইথনের একটি দুর্দান্ত প্রজননযোগ্যতা সরঞ্জাম অবশ্যই আইপিথন / জুপিটার নোটবুক ( % লগন এবং% লগস্টার্ট ম্যাজিকগুলি ভুলে যাবেন না )। টিপ: আপনার নোটবুকটি পুনরুত্পাদনযোগ্য কিনা তা নিশ্চিত করতে, কার্নেলটি পুনরায় চালু করুন এবং উপরের থেকে নীচে সমস্ত কক্ষ চালানোর চেষ্টা করুন (বোতাম সমস্ত সেল চালান): যদি এটি কাজ করে তবে একটি সংরক্ষণাগার ফাইলে ("হিমায়িত") সমস্ত কিছু সংরক্ষণ করুন, অন্যথায় উল্লেখযোগ্যভাবে আপনার যদি ত্রুটিগুলি এড়ানোর জন্য অ-রৈখিক এবং অ ক্রমহীন এবং সুস্পষ্ট ফ্যাশনে ঘর চালনা করতে হয় তবে আপনাকে কিছুটা পুনরায় কাজ করতে হবে।

আরেকটি দুর্দান্ত সরঞ্জাম যা খুব সাম্প্রতিক (২০১৫) তা রিসিপি , যা সুমাত্রার মতো (নীচে দেখুন) তবে পাইথনের জন্য বিশেষভাবে তৈরি। আমি জানি না এটি জুপিটার নোটবুকগুলির সাথে কাজ করে কিনা তবে আমি জানি যে লেখক প্রায়শই সেগুলি ব্যবহার করেন তাই আমার ধারণা যে এটি বর্তমানে সমর্থিত না হলে এটি ভবিষ্যতে হবে will

গিটটিও দুর্দান্ত এবং এটি পাইথনের সাথে আবদ্ধ নয়। এটি আপনাকে কেবলমাত্র আপনার সমস্ত পরীক্ষা-নিরীক্ষা, কোড, ডেটাসেট, পরিসংখ্যান ইত্যাদির ইতিহাস রাখতে সহায়তা করবে না বরং বৈজ্ঞানিক ব্যবহার করে আপনাকে ( গিট পিক্যাক্স ) বজায় রাখার জন্য সহযোগিতা ( দোষ ) এবং ডিবাগ ( গিট - বাইসেক্ট ) সরবরাহ করতে সহায়তা করবে ডিবাগিংয়ের পদ্ধতি ( ডেল্টা ডিবাগিং নামে পরিচিত )। এখানে কোনও কল্পিত গবেষক তার নিজের পরীক্ষা-নিরীক্ষার লগিং সিস্টেম তৈরির চেষ্টা করার গল্পটি এখানে গিটের মুখরূপে পরিণত না হওয়া অবধি রয়েছে।

যে কোনও ভাষার সাথে ( পিপিতে পাইথন এপিআই সহ ) কাজ করে এমন একটি সাধারণ সরঞ্জাম হ'ল সুমাত্রা , যা আপনাকে বিশেষভাবে প্রতিরূপযোগ্য গবেষণা করতে সহায়তা করার জন্য ডিজাইন করা হয়েছে ( যথাযথ একই কোড এবং সফটওয়্যারগুলির দ্বারা একই ফলাফল উত্পন্ন করার জন্য প্রতিরূপ লক্ষ্য), যেখানে পুনরুত্পাদনীয়তা উত্পাদন করতে পারে কোনও মাধ্যম দেওয়া একই ফলাফল, যা অনেক বেশি শক্ত এবং সময় সাপেক্ষ এবং স্বয়ংক্রিয়ভাবে কার্যকর নয়)।

সুমাত্রা কীভাবে কাজ করে তা এখানে: আপনি সুমাত্রার মাধ্যমে যে প্রতিটি পরীক্ষা নিরীক্ষণ করেন, এই সফ্টওয়্যারটি প্রায়শই ভিডিওগেমগুলিতে পাওয়া "সেভ গেম স্টেট" এর মতো কাজ করবে। আরও স্পষ্টভাবে, এটি সংরক্ষণ করবে:

  • আপনি সরবরাহ করেছেন সমস্ত পরামিতি;
  • আপনার পুরো পরীক্ষামূলক অ্যাপ্লিকেশন এবং কনফিগার ফাইলগুলির সঠিক উত্সকোডের অবস্থা;
  • আউটপুট / প্লট / ফলাফল এবং আপনার পরীক্ষামূলক অ্যাপ্লিকেশন দ্বারা উত্পাদিত কোনও ফাইল।

এটি আপনার প্রতিটি পরীক্ষার জন্য টাইমস্ট্যাম্প এবং অন্যান্য মেটাডেটাসের সাথে একটি ডাটাবেস তৈরি করবে, যা আপনি পরে ওয়েবজিইউআই ব্যবহার করে ক্রল করতে পারেন। যেহেতু সুমাত্রা আপনার নির্দিষ্ট সময়ের জন্য নির্দিষ্ট সময়ে নির্দিষ্ট পরীক্ষার জন্য আপনার অ্যাপ্লিকেশনটির পুরো রাজ্যটি সংরক্ষণ করেছিল, আপনি যে কোডটি চান তার যে কোনও নির্দিষ্ট ফলাফল তৈরি করে এমন কোডটি পুনরুদ্ধার করতে পারেন, সুতরাং আপনার স্বল্প ব্যয়ে প্রতিলিপিযোগ্য গবেষণা রয়েছে (স্টোরেজ বাদে যদি আপনি বিশাল ডেটাসেটগুলিতে কাজ করেন তবে আপনি প্রতিবার সবকিছু সংরক্ষণ করতে না চাইলে ব্যতিক্রমগুলি কনফিগার করতে পারেন)।

আর একটি দুর্দান্ত সরঞ্জাম হ'ল জিনোমের জিটজিস্ট (পূর্বে পাইথনে কোডড কিন্তু এখন ভালাকে পোর্ট করা হয়েছে), একটি অল-কম্পাসিং অ্যাকশন জার্নালিং সিস্টেম, যা আপনি যা কিছু করেন তা রেকর্ড করে এবং এটি মেশিন লার্নিংকে সময়কালের জন্য সংক্ষিপ্তসার হিসাবে ব্যবহার করতে পারে যা আপনি আইটেমগুলির মধ্যে সম্পর্ক চান সাদৃশ্য এবং ব্যবহারের নিদর্শনগুলির উপর, যেমন "গত বছরের এক মাস ধরে আমি এক্স প্রকল্পে কাজ করার সময় আমার কাছে সবচেয়ে প্রাসঙ্গিক কী ছিল?" এর মতো প্রশ্নের উত্তর দেওয়া ? । মজার বিষয় হচ্ছে, জিম ডেস্কটপ উইকি , এভারনোটের অনুরূপ একটি নোট গ্রহণকারী অ্যাপ্লিকেশন, জিটজিস্টের সাথে কাজ করার জন্য একটি প্লাগইন রয়েছে।

শেষ পর্যন্ত, আপনি গীত বা সুমাত্রা বা অন্য যে কোনও সফ্টওয়্যার আপনি চান সেগুলি ব্যবহার করতে পারেন, তারা আপনাকে একই প্রতিরূপ দক্ষতা সম্পর্কে সরবরাহ করবে তবে সুমাত্রা বিশেষত বৈজ্ঞানিক গবেষণার জন্য তৈরি করা হয়েছে যাতে এটি ওয়েব জিইউআইয়ের মতো কয়েকটি অভিনব সরঞ্জাম সরবরাহ করতে পারে আপনার ফলাফলগুলি, যদিও কোডটি রক্ষণাবেক্ষণের দিকে গিটটি আরও উপযুক্ত tail অথবা অবশ্যই আপনি উভয় ব্যবহার করতে পারেন!

/ সম্পাদনা: ডিজাইন এখানে একটি খুব গুরুত্বপূর্ণ পয়েন্ট স্পর্শ: আপনার সেটআপ এর অনুলিপি আপনার অ্যাপ্লিকেশন এর প্রতিরূপতা হিসাবে গুরুত্বপূর্ণ। অন্য কথায়, আপনার কমপক্ষে আপনার সঠিক সংস্করণ এবং আপনার প্ল্যাটফর্মের বিশদ সহ আপনি ব্যবহৃত গ্রন্থাগার এবং সংকলকগুলির একটি সম্পূর্ণ তালিকা সরবরাহ করা উচিত ।

ব্যক্তিগতভাবে পাইথনের সাথে বৈজ্ঞানিক কম্পিউটিংয়ে আমি জানতে পেরেছি যে গ্রন্থাগারগুলি সহ একটি অ্যাপ্লিকেশন প্যাকেজিং করা খুব বেদনাদায়ক, সুতরাং আমি এখন অ্যানাকোন্ডা (দুর্দান্ত প্যাকেজ ম্যানেজার কনডা সহ ) অল-ইন-ওয়ান বৈজ্ঞানিক পাইথন প্যাকেজটি ব্যবহার করি , এবং কেবল ব্যবহারকারীদের একই প্যাকেজটি ব্যবহার করার পরামর্শ দিন। আরেকটি সমাধান একটি স্ক্রিপ্ট স্বয়ংক্রিয়ভাবে একটি জেনারেট করতে প্রদান হতে পারে virtualenv , বা বাণিজ্যিক ব্যবহার সবকিছু প্যাকেজ Docker অ্যাপ্লিকেশন হিসেবে dsign দ্বারা উদাহৃত বা ওপেনসোর্স দ্য ভাগ্রান্ট (সঙ্গে উদাহরণস্বরূপ pylearn2-ইন-এ-বক্স যা দ্য ভাগ্রান্ট ব্যবহার একটি সহজে পুনরায় বিতরণ উত্পাদন করতে ভার্চুয়াল পরিবেশ প্যাকেজ)।

পরিশেষে, আপনার প্রয়োজনমতো আপনার পুরোপুরি কাজের পরিবেশ রয়েছে তা নিশ্চিত করতে আপনি ভার্চুয়াল মেশিন তৈরি করতে পারেন (ভার্চুয়ালবক্স দেখুন) এবং আপনি নিজের পরীক্ষার ভিতরে চালানোর জন্য মেশিনের অবস্থা (স্ন্যাপশট) সংরক্ষণ করতে পারেন। তারপরে আপনি এই অন্তর্ভুক্ত থাকা সমস্ত কিছু সহ এই ভার্চুয়াল মেশিনটি ভাগ করে নিতে পারেন যাতে যে কেউ আপনার পরীক্ষারটিকে আপনার সঠিক সেটআপের সাথে প্রতিলিপি করতে পারে। এটি সম্ভবত কোনও সফ্টওয়্যার ভিত্তিক পরীক্ষার অনুলিপি করার সর্বোত্তম উপায়। ধারকগুলি আরও হালকা ওজনের বিকল্প হতে পারে তবে এগুলি পুরো পরিবেশকে অন্তর্ভুক্ত করে না, যাতে প্রতিলিপি বিশ্বস্ততা কম শক্ত হয়।

/ সম্পাদনা 2: এখানে দুর্দান্ত ভিডিওর সংক্ষিপ্তসার রয়েছে (ডিবাগিংয়ের জন্য তবে এটি গবেষণার ক্ষেত্রেও প্রয়োগ করা যেতে পারে) পুনরুত্পাদনযোগ্য গবেষণা করার জন্য কী কী মৌলিক: আপনার পরীক্ষাগুলি এবং বৈজ্ঞানিক পদ্ধতির একে অপরের পদক্ষেপগুলিতে লগইন করা, এক ধরণের "সুস্পষ্ট পরীক্ষা-নিরীক্ষা"


14

ডকার পরীক্ষা করে দেখুন ! এবং সাধারণভাবে, সফ্টওয়্যার ইঞ্জিনিয়ারিং বিচ্ছিন্নতা এবং পুনরুত্পাদনযোগ্যতা নিশ্চিত করার জন্য দশক ধরে তৈরি করেছে যে সমস্ত অন্যান্য ভাল জিনিস।

আমি জোর দিয়ে বলতে চাই যে কেবল পুনরুত্পাদনযোগ্য ওয়ার্কফ্লো হওয়া যথেষ্ট নয় , তবে ওয়ার্কফ্লোগুলি পুনরুত্পাদন করাও সহজ । আমার অর্থ কী তা আমাকে দেখাতে দিন। মনে করুন যে আপনার প্রকল্পটি পাইথন, একটি ডাটাবেস এক্স এবং স্কিপি ব্যবহার করে। অবশ্যই আপনি পাইথন থেকে আপনার ডাটাবেসের সাথে সংযোগ স্থাপনের জন্য একটি নির্দিষ্ট গ্রন্থাগার ব্যবহার করবেন এবং স্কিপি কিছু বিচ্ছিন্ন বীজগণিত রুটিন ব্যবহার করে ঘুরে দেখাবে। এটি সর্বদা একটি খুব সহজ সেটআপ, তবে সেটআপ করা সম্পূর্ণ সহজ নয়, পাং উদ্দেশ্যে। যদি কেউ আপনার স্ক্রিপ্টগুলি সম্পাদন করতে চায় তবে তাকে সমস্ত নির্ভরতা ইনস্টল করতে হবে। বা আরও খারাপ, তার ইতিমধ্যে ইনস্টল থাকা এর বেমানান সংস্করণ থাকতে পারে। এই জিনিসগুলি ঠিক করতে সময় লাগে। আপনার যদি কিছু মুহুর্তে নিজের কম্পিউটারগুলি একটি ক্লাস্টারে, অন্য কোনও ক্লাস্টারে বা কিছু ক্লাউড সার্ভারে স্থানান্তরিত করতে হয় তবে এটি আপনারও সময় নিতে পারে।

এখানে আমি ডকারকে দরকারী মনে করি। ডকার হ'ল বাইনারি পরিবেশের জন্য রেসিপিগুলি আনুষ্ঠানিককরণ এবং সংকলনের একটি উপায়। আপনি নিম্নলিখিতগুলি একটি ডকফাইফাইলে লিখতে পারেন (আমি এখানে ডকফাইফাইল সিনট্যাক্সের পরিবর্তে সরল ইংরেজি ব্যবহার করছি):

  • উবুন্টুর মতো একটি বেসিক বাইনারি পরিবেশের সাথে শুরু করুন
  • লিপস্পার্স-ডেভ ইনস্টল করুন
  • (পাইপ) নিপ্পি এবং স্কিপি ইনস্টল করুন
  • এক্স ইনস্টল করুন
  • LibX-dev ইনস্টল করুন
  • (পাইপ) পাইথন-এক্স ইনস্টল করুন
  • আইপিথন-নোটবুক ইনস্টল করুন
  • আমার অজগর স্ক্রিপ্টগুলি / নোটবুকগুলি আমার বাইনারি পরিবেশে, এই ডেটাফাইলে এবং অন্যান্য বিবিধ জিনিসগুলি করতে এই কনফিগারেশনগুলিতে অনুলিপি করুন। পুনরুত্পাদনযোগ্যতা নিশ্চিত করতে, স্থানীয় ফাইলের পরিবর্তে নাম দেওয়া url থেকে তাদের অনুলিপি করুন।
  • হয়তো আইপিথন-নোটবুক চালান।

পাইপ ব্যবহার করে পাইথনে কিছু লাইন জিনিস ইনস্টল করা হবে, যেহেতু পিপ নির্দিষ্ট প্যাকেজ সংস্করণ নির্বাচন করতে খুব পরিষ্কার কাজ করতে পারে। এটিও পরীক্ষা করে দেখুন!

এবং এটাই. আপনি যদি আপনার ডকফাইফিল তৈরি করার পরে এটি তৈরি করা যায়, তবে এটি যে কোনও জায়গায় তৈরি করা যেতে পারে, তবে (যেমন তারা আপনার প্রকল্প-নির্দিষ্ট ফাইলগুলিতেও অ্যাক্সেস পেয়ে থাকে, উদাহরণস্বরূপ যে আপনি এগুলিকে ডকফাইফিল থেকে রেফারেন্সযুক্ত পাবলিক url এ রেখেছেন)। সর্বোত্তম কী, আপনি অন্য ব্যক্তিদের ব্যবহারের জন্য ফলস্বরূপ পরিবেশকে (একটি "চিত্র" বলা হয়) একটি পাবলিক বা প্রাইভেট সার্ভারে ("রেজিস্টার" নামে পরিচিত) আপলোড করতে পারেন। সুতরাং, আপনি যখন আপনার কর্মপ্রবাহ প্রকাশ করবেন তখন আপনার ডকফেরাইল আকারে সম্পূর্ণ প্রজননযোগ্য রেসিপি এবং আপনার বা অন্য লোকেদের পক্ষে আপনি যা করেন তা পুনরুত্পাদন করার একটি সহজ উপায় উভয়ই থাকে:

docker run dockerregistery.thewheezylab.org/nowyouwillbelieveme

বা যদি তারা আপনার স্ক্রিপ্টগুলিতে এবং আরও কিছু সামনে ঝুঁকি মারতে চায়:

docker run -i -t dockerregistery.thewheezylab.org/nowyouwillbelieveme /bin/bash

8

দুর্ভাগ্যক্রমে, প্ল্যাঙ্কের পোস্টটিতে উত্তর দেওয়ার মতো পর্যাপ্ত খ্যাতি পয়েন্ট আমার কাছে নেই, তাই পুরো থ্রেডের উত্তর দিতে হবে - সে সম্পর্কে দুঃখিত।

আমি প্রকৃতপক্ষে উল্লিখিত ওপেন-সোর্স কালেক্টিভ নলেজ ফ্রেমওয়ার্কের বিকাশকারী। এটি গিটিহাবের মাধ্যমে ভাগ করা ইউনিফাইড জেএসএন এপিআই এবং জেএসওএন মেটা দিয়ে পুনরায় ব্যবহারযোগ্য এবং পুনরুত্পাদনযোগ্য পাইথন উপাদান হিসাবে শৈল্পিক এবং পরীক্ষামূলক ওয়ার্কফ্লো ভাগ করে নেওয়া সহজ করার চেষ্টা করে। এগুলি একই ইউনিফাইড জেএসএন এপিআইয়ের সাথে ভবিষ্যদ্বাণীমূলক বিশ্লেষণের সাথেও সংযুক্ত থাকতে পারে।

আমরা সবেমাত্র নতুন সংস্করণ ভি 1.8.1 প্রকাশ করেছি এবং বিস্তৃত ডকুমেন্টেশন সরবরাহ করেছি যাতে আশা করি ধারণাগুলি এখন বুঝতে সহজ হবে: http://github.com/ctuning/ck/wiki

এই কাঠামোর উপর ভিত্তি করে আমাদের কাছে এখন অনেকগুলি একাডেমিক এবং শিল্প প্রকল্প রয়েছে, যাতে আপনি সেগুলির একটি পরীক্ষা করতে পারেন - স্বেচ্ছাসেবীদের দ্বারা পুনরুত্পাদনযোগ্য উপায়ে সরবরাহ করা মোবাইল ডিভাইসগুলিতে ভিড়সোর্সিং প্রোগ্রামের অপ্টিমাইজেশন: http://cknowledge.org/repo

আমরা এখানে পুনরুত্পাদনযোগ্য বিজ্ঞানের সাথে সম্পর্কিত বিভিন্ন সংস্থার উপর নজর রাখি: https://github.com/ctuning/ck/wiki/Enabling-open-s विज्ञान

যদিও আমি প্রাথমিকভাবে কম্পিউটার সিস্টেমের গবেষণাটিকে পুনরুত্পাদনযোগ্য করে তোলার দিকে ফোকাস দিচ্ছি, অন্য ডোমেনগুলির সহকর্মীদের সাথে আমার আকর্ষণীয় আড্ডা হয়েছিল এবং মনে হয় তাদের খুব একই রকম সমস্যা রয়েছে। সুতরাং, যদি আমাদের কাঠামো অন্য সম্প্রদায়ের জন্য কোনও সহায়ক হতে পারে তবে আমি খুব খুশি হব! আপনার যদি কোনও প্রশ্ন বা পরামর্শ থাকে তবে নির্দ্বিধায় যোগাযোগ করুন!


1
এই গ্রীষ্মে পুনরুত্পাদনযোগ্য গবেষণার উপর ডাইজেস্ট (সম্পর্কিত সরঞ্জাম, ডেটা সেট, নিবন্ধ এবং ইভেন্টগুলির লিঙ্ক সহ) এছাড়াও আগ্রহী হতে পারে: github.com/ctuning/ck/wiki/Enabling-open-s
विज्ञान-

7

একটি সম্পূর্ণ কোর্স রয়েছে যা প্রজননযোগ্য গবেষণায় নিবেদিত। https://www.coursera.org/learn/reproducible-research এই কোর্সটি আর এর উপর ভিত্তি করে তৈরি করা হয়েছে তবে অন্তর্নিহিত ধারণাটি শিখতে পারবেন।

একটি সহজ উপায় হ'ল আইপাইথন নোটবুক রাখা এবং আপনার করা প্রতিটি নোংরা কাজ সংরক্ষণ করা, এটি ডেটা পরিষ্কার করা, অনুসন্ধান বিশ্লেষণ বা মডেলটি তৈরি করা হোক।


6

আমি সম্প্রতি নিম্নলিখিত সরঞ্জাম জুড়ে এসেছি - http://github.com/ctuning/ck । এটি ইতিমধ্যে পাইথনে লেখা হয়েছে এবং আপনার যা প্রয়োজন তা অন্তর্ভুক্ত রয়েছে বলে মনে হচ্ছে (আমার সহকর্মী চিত্রের স্বীকৃতি স্বয়ংক্রিয় করতে পাইলট প্রকল্পে এটি ব্যবহার করছেন)।

পেশাদাররা:

  1. খুব ছোট, পোর্টেবল এবং কাস্টমাইজযোগ্য
  2. ভবিষ্যদ্বাণীমূলক বিশ্লেষণগুলি ব্যবহার করে পরীক্ষাগুলি বিতরণ এবং প্রক্রিয়া করার জন্য ওয়েব সার্ভারকে অন্তর্ভুক্ত করে
  3. ভিড়ের উত্স এবং সংকলক অপ্টিমাইজেশনের পুনরুত্পাদন - এর একটি দুর্দান্ত ব্যবহারের উদাহরণ রয়েছে - http://cknowledge.org/repo

কনস:

  1. কিছুটা নিচু স্তর - জেএসওএন এপিআই বা কমান্ড লাইন ব্যবহার করে গিটহাবের মাধ্যমে পাইথন উপাদানগুলি ভাগ করে নেওয়া আপনার নিজস্ব কর্মপ্রবাহটি প্রয়োগ করতে হবে
  2. ডকুমেন্টেশন কিছুটা জটিল - আমি সত্যিই আশা করি তারা শীঘ্রই এটি আপডেট করার জন্য সময় পাবে।

6

আমি সম্প্রতি একটি ওপেন সোর্স সরঞ্জাম তৈরি করেছি এবং প্রকাশ করেছি http://dvc.org বা ডিভিসি যা আপনি পৌঁছানোর চেষ্টা করছেন ঠিক তা করে:

  1. [ডেটা সংস্করণ নিয়ন্ত্রণের সরঞ্জামসমূহ]] ডিভিসি গিটের শীর্ষে কাজ করে, ডেটা ফাইল সংস্করণ নিয়ন্ত্রণ যুক্ত করে (ফাইলগুলি গিটের বাইরে সঞ্চিত থাকে) এবং কোড এবং ডেটা ফাইলগুলির মধ্যে নির্ভরতা ট্র্যাক করে। ডিভিসি কোড এবং ডেটার জন্য স্বয়ংক্রিয়ভাবে নির্ভরতা গ্রাফ (ডিএজি) গ্রহণ করে।
  2. [সরঞ্জামগুলি পর্যায় এবং পরীক্ষার পুনরুত্পাদন করতে সক্ষম করে Tools] dvc repro data/scores.csvডিএজি সংক্রান্ত সমস্ত প্রয়োজনীয় পদক্ষেপ পুনরুত্পাদন করে।
  3. [এই জাতীয় প্রকল্পের জন্য প্রোটোকল এবং প্রস্তাবিত ডিরেক্টরি কাঠামো]] ডিভিসির একটি ডেটা ডিরেক্টরি প্রয়োজন ( dataডিফল্টরূপে) যেখানে আপনি সমস্ত ডেটা ফাইল সঞ্চয় করার কথা ভাবেন। যাইহোক, ডিভিসি স্বচ্ছভাবে প্রকৃত সামগ্রীটি .cacheডিরেক্টরিতে স্থানান্তরিত করে এবং সিমলিংকগুলি তৈরি করে (হ্যাঁ, আমি এটি উইন্ডোতেও কাজ করতে পেরেছি)। .cacheডিরেক্টরি গীত সিঙ্ক নয় তবে মেঘ মাধ্যমে সিঙ্ক করতে পারেনি (এস 3 বা GCP) হুকুমে dvc sync data/scores.csv(এটা অনুরূপ তথ্য ফাইল মত ক্যাশে থেকে সিঙ্ক করে .cache/scores.csv_29de545)
  4. [স্বয়ংক্রিয় বিল্ড / রান সরঞ্জামসমূহ।] উপরের থেকে দেখুন।

ডিভিসি টিউটোরিয়াল একটি ভাল সূচনা পয়েন্ট - "ডেটা সংস্করণ নিয়ন্ত্রণ: পুনরাবৃত্তি মেশিন লার্নিং"


5

অস্বীকৃতি: আমি একটি সংস্থা, ডেটমোতে কাজ করি যা এটি করার জন্য একটি মুক্ত-উত্স সরঞ্জাম তৈরি করে।

প্রজননযোগ্যতার জন্য সর্বোত্তম অনুশীলন নিম্নলিখিত:

1) প্রথমে আপনার পরিবেশকে একটি ডকার পরিবেশে একটি ডকফাইফিল তৈরি করে এবং নিশ্চিত করা উচিত যে সমস্ত ফাইল নির্ভর করে depend আমি এই সংস্থানটি সেরা হিসাবে পেয়েছি ( https://arxiv.org/pdf/1410.0846.pdf )

২) একবার আপনার কাছে হয়ে গেলে আপনি সিদ্ধান্ত নিতে চান যে আপনি সমস্ত পারফরম্যান্স মেট্রিক্স এবং কনফিগারেশনের ট্র্যাক রাখতে পারবেন (যাতে আপনি ভবিষ্যতের পরীক্ষার জন্য এটি আবার ঘুরে দেখতে পারেন)

3) অবশেষে, কিছু ডকুমেন্টেশন লিখুন যাতে কোনও নতুন পরীক্ষক / বিকাশকারী আপনার কোডটি পুনরায় দেখতে, পরিবেশের সাথে প্রতিলিপি করতে এবং আপনার কনফিগারেশন এবং পারফরম্যান্সের মেট্রিকগুলি কোথায় রেখেছেন তা দেখতে সক্ষম হয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.