כתיבה מדעית עם quarto ו-shiny

בוריס לבדנקו

מבוא

על מה נדבר היום?

  • האם את שומרת טבלאות לקבצים ואחר כך מייבאת אותן למסמך?🙊

  • פעם כתבת קוד והעתקת אותו למסמך?🗿

  • הגשת מאמר ואחרי שפורסם גילית שהקוד לא משחזר את התוצאות שפרסמת?💀

  • נציג את שייני וקווארטו, שתי חבילות מדהימות שייתרו את הפעולות הנ”ל, ועוד!

מי אני?

  • נעים מאוד - בוריס לבדנקו.
  • בעל תואר ראשון בסטטיסטיקה ופסיכולוגיה, תואר שני בסטטיסטיקה.
  • סטטיסטיקאי/מדען נתונים בחברת MeMed.
  • מרצה לתכנות ב-R באוניברסיטת רייכמן.

מה אני עושה ב-MeMed?

  • מנתח נתונים קליניים במסגרת הפקת Real World Evidence.
  • מתכנן מחקרים קליניים לרבות ניסויים בארץ ובחו”ל.
  • כותב מאמרים תוך שמירה על הוגנות מדעית וסטטיסטית.
  • קווארטו נכנס בכל אחד מהשלבים האלו.

Quarto

מה זה quarto?

  • מערכת קוד-פתוח לבניית מסמכים, דוחות, אתרים ומצגות מתוך קובץ מקור יחיד המבוסס על Markdown וקוד.

  • מופעלת ע״י Pandoc ולכן תומכת ביצוא ל-HTML, PDF, Word, Reveal JS, ספרים, אתרים ועוד – בלי לשכתב שורות קוד.

  • אגנוסטית לשפה: R, python, Julia, Observable JS ואפילו שילוב ביניהן באותו קובץ.

  • מקדמת שחזוריות (reproducibility) – מריצה את הקוד בזמן ההידור, קולטת תלויות ומתעדת גרסאות חבילות.

  • אינטגרציה הדוקה עם VS Code, RStudio ו-GitHub Actions.

איך פגשתי את קווארטו?

  • שנה ב׳ לתואר—קורס סטטיסטיקה שבו המרצה דרש גם קוד R וגם הסברים ב-Word/PDF באותה מטלה.

  • גיליתי את R Markdown (האב־טיפוס של Quarto) ונדהמתי: קובץ יחיד שמכיל קוד, טקסט ו-LaTeX.

  • בלחיצה אחת הפקתי גם Word וגם PDF בלי להעתיק גרפים או טבלאות ידנית.

  • היכולת לשלב משוואות מתמטיות לצד קטעי קוד - 🔥🔥🔥

  • שחזוריות מלאה ו־version control כבר בשלב הלימודים.

    • לא עוד שמות קובץ כמו final_I_swear_mom_please_help(2).R או “פרויקט סופי סופי באמא 2 אחרון”.

דוגמאות לשימושים אקדמיים בקווארטו

קווארטו שימש אותי לאורך כל הדרך, החל מסטודנט ועד למרצה:

שימושים של קווארטו בתעשיה

  • חישוב גודל מדגם לקבלת מענק מחקר (Registry Grant)

  • הפקה של מאמר אקדמי (Inpatients)

  • עבודה עם R ופייתון (Maccabi)

מיני סדנא: קובץ קווארטו משלנו

פתיחת קובץ קווארטו חדש

  • File > New File > Quarto Document

  • יתכן ותדרש התקנת חבילה.

מרכיבי קובץ קווארטו

  • הכותרת (YAML) - מכילה את כל המידע על המסמך, כולל שם מחבר, תאריך, סוג פלט וכו׳.
  • בכורת ה-YAML מופיעות גם הגדרות שונות לגבי קומפילציה של הקובץ.
  • גוף המסמך - מכיל את הקוד והטקסט שמייצרים את המסמך.

מיני קובץ קווראטו

  • הדוגמה המובנית מכילה את כל המרכיבים הבסיסיים של קובץ קווארטו.
  • נעבור על מרכיביה ונבצע שינויים כדי לייצר קובץ קווארטו משלנו.
  • אפשר לבדוק את השינויים על ידי לחיצה על כפתור ה-Render (או Ctrl+Shift+K).

Shiny

מה זה shiny?

דוגמאות מובחרות מהגלריה

מבנה של אפליקציית שייני

  • אפליקציית שייני מורכבת משני חלקים עיקריים:
    • UI - ממשק המשתמש, החלק הגרפי של האפליקציה.
    • Server - הלוגיקה מאחורי האפליקציה, החלק שמבצע חישובים ומחזיר תוצאות ל-UI.
  • החלקים האלו עובדים יחד כדי ליצור אפליקציה אינטראקטיבית.
  • אפשר לכתוב אותם באותו קובץ.

מרכיבים של UI

  • ב-UI נמקם את כל מה שהמשתמש רואה באפליקציה.
  • פונקיות שנגמרות ב-“Input” מציגות שדות קלט.
  • פונקיות שנגמרות ב-“Output” מציגות תוצאות.
  • אפשר לסדר את השדות בלשוניות, קופסאות ועוד.

מרכיבים של server

  • בחלק ה-server מתבצעים החישובים.
  • חלק זה הוא ריאקטיבי, כלומר מגיב לשינויים ב-UI.
  • למשל, אם המשתמש בוחר ערך מסויים בשדה קלט, ה-server יחשב את התוצאה ויחזיר אותה ל-UI.

דוגמה לאפליקציית שייני

  • יש אפליקציה לדוגמה ב-RStudio.
  • File > New File > Shiny Web App
  • נחליף את גרף הדוגמה בשני גרפים דומים משלנו.

פרסום האפליקציה

  • יש דרכים רבות לשתף אפליקציות שייני, לרבות:
    • פרסום ב-GitHub
    • פרסום ב-Posit Connect
    • פרסום ב-ShinyApps.io
    • שיתוף קוד המקור הגולמי/ארוז בחבילה.

פרסום האפליקציה ב-ShinyApps.io

  • נדרשת התקנת חבילה נוספת: rsconnect.
  • היא מותקנת אוטומטית בפעם הראשונה שמפרסמים אפליקציה.
  • החבילה מאפשרת חיבור לשירותים חיצוניים כמו ShinyApps.io.

ShinyAssistant

  • חברת Posit פיתחה מודל שפה בשם ShinyAssistant.
  • המודל הזה עוזר לכתוב קוד שייני בצורה קלה ומהירה יותר.
  • הוא מריץ את הקוד לצד הפרומפט ומראה את האפליקציה.
  • מניסיוני, יותר מוצלח באיתור באגים בשייני מאשר chatGPT.
  • קישור

Example prompt: Please create an app to compute the Z-test from the sample statistic and known variance. Provide details and a plot of the p-value.

זמן לשאלות

הצעות לשאלות

-איך עברת מהאקדמיה לתעשייה? אילו כישורים הכי חשובים לדעתך לסטודנט שמסיים תואר ראשון?

  • האם לדעתך כדאי להשקיע גם בלמידה של Python במקביל ל-R?

  • האם חייבים לדעת R טוב כדי לעבוד עם Shiny? האם יש תמיכה בפייתון?

הוסיפו אותי ללינקדאין

תודה רבה!