الفلك

رسم البيانات الفلكية باستخدام بايثون

رسم البيانات الفلكية باستخدام بايثون


We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

كنت أحاول إنشاء رسم بياني يوضح المسافات بين النجوم والأرض ، ومع ذلك لم أتمكن من الحصول على الرسم البياني المطلوب كما هو موضح أدناه (انقر للتكبير): الرسم البياني الخاص بي:

كما اقترحuhoh ، قمت بوضع رسم بياني فوق الآخر. أعتذر عن نشر هذا الرسم البياني المربك

يشير الرسم البياني المدمج إلى أن مواضع المنحنيات في الرسم البياني الخاص بي تختلف تمامًا عن تلك الموجودة في الرسم البياني المتوقع.

لقد اتبعت هذا الدليل لحساب وظائف الموقع للنجوم.

سؤالي: هل ارتكبت أي أخطاء نتج عنها الشذوذ؟

شكرا مقدما.

شروح الكود:

  • الاسم - اسم النجم

  • RA - Right Ascension بالدرجات ، منسق ICRS. (J2000)

  • ديسمبر - الانحراف بالدرجات ، منسق ICRS. (J2000)

  • pm_mRA - الحركة الصحيحة في الصعود الأيمن ، بالثواني المليار في السنة

  • pm_mdec - الحركة المناسبة في الانحراف ، بالثواني المليار في السنة

  • vr - السرعة الشعاعية بالكيلومترات في الثانية ، وتعني القيمة الموجبة أن النجم يتحرك بعيدًا عنا

  • mparallax - اختلاف المنظر للنجم بالثواني المليار

  • د - المسافة بين النجم والأرض

رمز بلدي:

def parseTextFile (file_name، delimiter = "،" header = 0): "" "تحليل ملف نصي إلى قائمة. محتويات الملف محددة ولها رأس." "مع فتح (اسم_الملف) كـ f: # تخطي رأس i في النطاق (الرأس): next (f) data = [] # تحليل محتويات الملف للسطر في f: # إزالة السطر الجديد char line = line.replace (' n'، "). استبدل (' r '، ") # قسّم السطر بواسطة السطر المحدد = line.split (المحدد) # قم بإزالة المسافات البيضاء من الإدخالات الفردية في السطر لـ i ، الإدخال في التعداد (سطر): line [i] = entry.strip () # أضف محتويات السطر إلى بيانات قائمة البيانات.ملحق (سطر) إرجاع البيانات fig = plt.figure () ax = fig.add_subplot () # time span time = np.arange (-60000،100000،10) count = 1 xdic = {} ydic = {} zdic = {} # أسطر بيانات متعددة للنجمة في ملف parseTextFile (file_name، header = 1): name = str (star [0]) RA = float (star [1]) Dec = تعويم (نجمة [2]) pm_mRA = تعويم (نجمة [3]) pm_mDec = تعويم (نجمة [4]) vr = تعويم (نجمة [5]) mparallax = تعويم (نجمة [6]) pm_RA = pm_mRA * 0.001 pm_Dec = pm_mDec * 0.001 د = 1 / (mparallax * 0.001) # سرعات عرضية vta = pm_RA * d * 4.740 vtd = pm_Dec * d * 4.740 # السرعات الخطية vx = vr * np.cos (Dec) * np.cos (RA) - vta * np.sin (RA) - vtd * np.sin (Dec) * np.cos (RA) vy = vr * np.cos (Dec) * np.sin (RA) + vta * np.cos (RA) - vtd * np. sin (Dec) * np.sin (RA) vz = vr * np.sin (Dec) + vtd * np.cos (Dec) # تحويل الوحدة من km / s إلى جهاز كمبيوتر / سنة vx_pcyr = vx / 977780 vy_pcyr = vy / 977780 vz_pcyr = vz / 977780 # المواقف الأولية xi = d * np.cos (Dec) * np.cos (RA) yi = d * np.cos (Dec) * np.sin (RA) zi = d * np.sin (ديسمبر) # دوال الموضع x = xi + vx_pcyr * time y = yi + vy_pcyr * time z = zi + vz_pcyr * time Distance = np.sqrt (x ** 2 + y ** 2 + z ** 2) ax. مؤامرة (الوقت ، المسافة ، التسمية = الاسم) ax.set_xlabel ('الوقت (السنة)') ax.set_ylabel ('المسافة (الكمبيوتر)') ax.legend () plt.show ()

لقد نسيت تغيير وحدة المسافة من فرسخ فلكي إلى سنة ضوئية. هذا خطأ بسيط في تحويل الوحدة كان يجب تجنبه.

الرسم البياني النهائي:

البيانات المستخدمة:

الاسم ، RA (deg) ، Dec (deg) ، pm_RA (mas / yr) ، pm_Dec (mas / yr) ، Vr (km / s) ، المنظر (mas)
الذئب 359،164.120271، + 07.014658، -3842.0، -2725.0،19.321،418.3
بروكسيما سنتوري ، 217.42895219 ، -62.67948975 ، -3775.75.765.54 ، -22.40.768.13
ألفا سنتوري ، 219.900850 ، -60.835619 ، -3608686 ، -22.3742
نجمة بارنارد ، 269.45207511 ، + 04.69339088 ، -798.5810328.12 ، -110.51.548.31
جليس 445،176.92240640، + 78.69116300،743.61،481.40، -111.65،186.86
Luhman 16A، 150.8218675، -53.319405556، -2754.77،358.72،23.1،500.51
سيريوس ، 101.28715533 ، -16.71611586 ، -546.01 ، -1223.07 ، -5.50 ، 379.21
لالاند 21185،165.83414166 ، + 35.96988004 ، -580.27 ، -4765.85 ، -84.69،392.64
روس 248355.479122 ، + 44.177994115.10 ، -1592.77 ، -77.715316.7
جليس 65،24.756054، -17.950569،3321،562،29،373.70

شفرة:

٪ matplotlib qt استيراد numpy كـ np من mpl_toolkits.mplot3d استيراد axes3d من matplotlib استيراد pyplot كـ plt من matplotlib استيراد حزم def parseTextFile (file_name، delimiter = "،" header = 0): "" "تحليل ملف نصي إلى قائمة. محتويات الملف محددة ولها رأس. "" مع فتح (اسم_الملف) كـ f: # تخطي رأس i في النطاق (الرأس): التالي (f) data = [] # تحليل محتويات الملف للسطر في f: # قم بإزالة سطر الحرف الجديد = line.replace (' n'، "). استبدل (' r'،") # قسّم السطر بواسطة السطر المحدد = line.split (محدد) # قص المسافات البيضاء من الإدخالات الفردية في سطر i ، الإدخال في تعداد (السطر): line [i] = entry.strip () # أضف محتويات السطر إلى بيانات قائمة البيانات. قم بإلحاق (سطر) بإرجاع البيانات إذا كان __name__ == "__main__": file_name = 'C:  Users  The Wings of Dream  Desktop  UWO-PA-Python-Course  Lecture 5  Homework 2  star_data.txt' # بدء البرنامج: fig = plt.figure () ax1 = fig.add_subplot (211 ، إسقاط = "3d") ax2 = fig.add_subplot (212) الوقت = np.arange (-600 00،100000،10) count = 1 xdic = {} ydic = {} zdic = {} للنجمة في parseTextFile (file_name، header = 1): name = str (star [0]) RA = float (star [1] ) ديسمبر = تعويم (نجمة [2]) pm_mRA = تعويم (نجمة [3]) pm_mDec = تعويم (نجمة [4]) vr = تعويم (نجمة [5]) mparallax = تعويم (نجمة [6]) pm_RA = pm_mRA * 0.001 pm_Dec = pm_mDec * 0.001 d = 1 / (mparallax * 0.001) vta = pm_RA * d * 4.740 vtd = pm_Dec * d * 4.740 vx = vr * np.cos (Dec) * np.cos (RA) - vta * np .sin (RA) - vtd * np.sin (Dec) * np.cos (RA) vy = vr * np.cos (Dec) * np.sin (RA) + vta * np.cos (RA) - vtd * np.sin (ديسمبر) * np.sin (RA) vz = vr * np.sin (ديسمبر) + vtd * np.cos (ديسمبر) vx_pcyr = vx / 977780 vy_pcyr = vy / 977780 vz_pcyr = vz / 977780 xi = d * np.cos (ديسمبر) * np.cos (RA) yi = d * np.cos (Dec) * np.sin (RA) zi = d * np.sin (Dec) x = xi + vx_pcyr * time y = yi + vy_pcyr * time z = zi + vz_pcyr * time xdic ['x' + str (count)] = x ydic ['y' + str (count)] = y zdic ['z' + str (count)] = z مسافة = np.sqrt (x ** 2 + y ** 2 + z ** 2) * 3.26156 ax1.plot (xdic ['x' + str (count)] ، ydic ['y' + str ( count)]، zdic ['z' + str (count)]) ax2.plot (الوقت ، المسافة ، التسمية = الاسم) العد = العد + 1 w_oort ، h_oort = 160000 ، 3.2 ax2.add_patch (patches.ectangle ((- 60000، 0.03)، w_oort، h_oort، color = 'slateblue'، alpha = 0.2)) ax2.annotate ('Oort Cloud'، xy = (15000،1.6)، size = 12) plt.axvline (x = 0، color = 'grey'، linestyle = '-'، linewidth = '0.5') # قيود التخطيط ax2.set_ylim (0.0، 10.0) ax2.set_xlim (-60000، 100000) ax1.set_xlabel ('x axis') ax1.set_ylabel ('المحور y') ax1.set_zlabel ('z axis') ax1.title.set_text ('Motion of Stars in Space') ax2.title.set_text ('Distance-Time') ax2.set_xlabel ('Time (Year) ') ax2.set_ylabel (' المسافة (سنة ضوئية) ') ax2.legend () plt.show ()

سيعطيك مخطط ax1 الفرعي مخططًا ثلاثي الأبعاد يوضح حركة النجوم.


مقدمة في معالجة الصور ببايثون

من أجل الحصول على فهم أعمق لكيفية معالجة الصور الفلكية ، سنكتب برنامجنا الخاص لإجراء المعالجة. لتقليل الجهد المبذول في القيام بذلك ، سوف نستخدم لغة الكمبيوتر Python. Python هي لغة برمجة تفاعلية وقابلة للتوسيع. يحتوي على امتدادات لتحميل الصور من ملفات FITS ، ومعالجة الصور باستخدام كود مضغوط بدون حلقات ، وعرض الصور على الشاشة. خلال معمل هذا الأسبوع ، ستتعرف على أساسيات الثعبان وبعض التفاصيل حول التعامل مع الصور في الثعبان.

بايثون برنامج مجاني. لذلك ، إذا كنت ترغب في العمل على تعلم Python خارج الفصل الدراسي ، فيمكنك الحصول عليها عبر الروابط الموجودة على صفحة الويب الخاصة بالفصل الدراسي. لاحظ أننا سنستخدم Python 2.7 وليس Python 3 (هذا لأن matplotlib أضاف مؤخرًا دعم Python 3 ، في الواقع لأن أستاذك أحفورة ولا يرغب في التغيير). سنستخدم عددًا من حزم python لمعالجة الصور (كمصفوفات عددية) ، وقراءة ملفات FITS ، وعرض البيانات. يحتوي Anaconda على Python و (جميع) الحزم الأخرى المطلوبة تقريبًا. إذا كنت تستخدم python مباشرة (على سبيل المثال في نظام Linux) ، فستحتاج إلى تثبيت هذه الحزم بشكل منفصل (وهو أمر سهل جدًا للتوزيعات مثل Ubuntu). إذا كان لديك جهاز Mac ، فأنت وحدك.

ستستخدم Python بكثافة خلال الفصل الدراسي ، لذا سيكون من الجيد تثبيتها على جهاز كمبيوتر يمكنك الوصول إليه خارج الفصل الدراسي (مثل الكمبيوتر المحمول إذا كنت تمتلك واحدًا).

لتثبيت Anaconda ، استخدم هذا الرابط http://continuum.io/downloads. تعمل الأجهزة الموجودة في المعمل بنظام windows 32 بت. بمجرد تثبيت Python ، حاول تشغيل ipython. بعد الوصول إلى سطر أوامر ipython ، يجب عليك كتابة
القرص المضغوط ح: /
لتغيير الدليل الحالي حيث يتم تخزين ملفاتك. يستخدم سطر أوامر ipython أوامر يونيكس. بعض الأوامر المفيدة هي: "ls" - لسرد محتويات الدليل الحالي ، و "cd" - لتغيير الدليل الحالي ، و "pwd" - لطباعة الدليل الحالي.
أفضل تعديل ملفات .py باستخدام gedit. قد تحتاج إلى تثبيت gedit. تعمل معظم برامج تحرير النصوص الأخرى بشكل جيد.

برنامج المثال الأول - قراءة ورسم صورة

لبدء استخدام Python ، دعنا نلقي نظرة على برنامج بسيط للقراءة في صورة بتنسيق FITS ورسمه على الشاشة. البرنامج موجود هنا: showimage.py. يجب عليك تنزيل البرنامج ثم تحميله في محرر نصوص من اختيارك. برنامج "المفكرة" يعبث بالتنسيق. Wordpad على ما يرام. يجب تثبيت Gedit على الأجهزة وهو جميل جدًا.

السطر الأول هو تعليق حول ما يفعله البرنامج. من الممارسات الجيدة التعليق بحرية على التعليمات البرمجية الخاصة بك.

المجموعة الثانية من الخطوط (3-7) تخبر بيثون أننا سنستخدم مجموعة من الامتدادات. الإضافات هي وحدات مكتوبة مسبقًا للقيام بمهام مختلفة. numpy ، أو 'Numerical Python' عبارة عن حزمة لتعريف الإنشاءات الرياضية مثل المصفوفات (أو المصفوفات) وتسهيل التعامل معها في Python. matplotlib عبارة عن حزمة تخطيط علمية. pyfits هي حزمة لقراءة وكتابة ملفات FITS.

أول شيء نقوم به بالفعل في البرنامج هو في السطر 12 ، حيث نقرأ في ملف FITS. يقرأ البرنامج حاليًا في ملف يسمى "testpattern1.fit". يجب عليك تحرير هذا السطر لقراءته في أحد الملفات التي قمت بإنشائها في آخر معمل. ملاحظة إذا كنت تقوم بتشغيل python في نفس الدليل الذي توجد به بياناتك ، فأنت تحتاج فقط إلى اسم الملف. خلاف ذلك ، سوف تحتاج إلى إضافة دليل الملف.

في السطر 15 ، نقوم بنسخ بيانات الصورة من ملف FITS إلى متغير يسمى img1. إن img1 عبارة عن مصفوفة numpy في الواقع ، وسنناقش لاحقًا كيفية إجراء العمليات الحسابية على المصفوفات غير المعقدة (إنها سهلة).

مجموعة الخطوط التالية ، 18-21 ، ترسم الصورة. مرة أخرى في عناصر الاستيراد ، قمنا باستيراد حزمة التخطيط "as plt". هذا يسمح لنا باستخدام الاختصار "plt" للإشارة إلى حزمة التخطيط. تستدعي جميع الأسطر الأربعة إجراءات في حزمة matplotlib.pyplot باستخدام plt كاختصار. يضبط السطر الأول التخطيط على الوضع التفاعلي ، وهذا يعني فقط أن البرنامج يستمر بعد عمل الحبكة بدلاً من انتظار أن ينظر المستخدم إلى الحبكة قبل المتابعة. يقوم السطر الثاني بإعداد خريطة الألوان. نظرًا لأن الكاميرا باللونين الأبيض والأسود ، فإننا نستخدم خريطة مقياس رمادية لعمل صور واقعية المظهر. يستخدم السطر الثالث إجراء "imshow" لعمل مخطط لبيانات الصورة باستخدام خريطة الألوان المحددة. يضع السطر الرابع الحبكة على الشاشة.

بمجرد تحرير البرنامج لقراءته في ملفك (تحرير السطر 12 ، انظر أعلاه) ، انطلق وقم بتشغيل البرنامج. ابدأ تشغيل ipython. ipython هي واجهة صدفة تفاعلية لبيثون تستخدم أوامر تشبه يونكس. لإعداد Anaconda python لواجهة الرسم التي نستخدمها ، اكتب '٪ pylab' بدون علامات الاقتباس. سترغب في القيام بذلك في كل مرة تبدأ فيها ipython أو سيتجمد البرنامج عندما تقوم بعمل مؤامرات. إذا كنت لا تقوم بتشغيل Anaconda ، فمن المحتمل ألا يكون هذا الأمر ضروريًا. استخدم القرص المضغوط للانتقال إلى الدليل حيث يكون showimage.py واكتب 'run showimage' بدون علامات الاقتباس واضغط على Enter. يجب أن يطفو ipython لعرض الصورة. لاحظ أن النافذة تفاعلية: يمكن للمرء تكبير الصورة أو تحريكها أو حفظها بتنسيقات متنوعة. إذا كانت لديك مشاكل في تشغيل البرنامج ، فتأكد من أنك في الدليل الصحيح وأنك قمت بتحرير البرنامج للبحث عن ملف FITS في المكان الصحيح. تأكد من أن البرنامج يعمل قبل المتابعة. سجل في دفتر المعمل الخاص بك الإجراءات التي اتبعتها لعرض الصورة بما في ذلك الدلائل حيث يتم حفظ showimage.py وصورتك. تذكر أن تبدأ في صفحة جديدة وتكتب تاريخ اليوم ووصفًا موجزًا ​​لأنشطة اليوم (مثل "مقدمة إلى Python") في أعلى الصفحة.

ملفات FITS

بعد تشغيل البرنامج ، يجب أن يتركك في موجه أوامر ipython. الآن اكتب "print h [0] .header". سيتم ملء شاشة ipython بمجموعة من المعلومات المشفرة في الملف. FITS هو تنسيق ملف "توثيق ذاتي". بالإضافة إلى بيانات الصورة ، يحتوي الملف على "بيانات وصفية" تصف معلمات الصورة وكيف ومتى تم الحصول على الصورة. تمت كتابتها بواسطة CCDOps عندما قمت بحفظ الملف في آخر معمل. تتكون البيانات الوصفية من اسم كلمة رئيسية وقيمة وتعليق اختياري.

على سبيل المثال ، تعطي الكلمة الأساسية NAXIS عدد المحاور ، يجب أن يكون 2. تعطي الكلمات الرئيسية NAXIS1 و NAXIS2 عدد البكسل على طول محوري الصورة. سجل هذه في دفتر المعمل الخاص بك. إذا قمت بحفظ صورة كاملة (كما هو موضح في المختبر الأخير) ، فيجب أن تتطابق هذه مع عدد وحدات البكسل في CCD. تحقق من وثائق CCD لمعرفة ما إذا كان ذلك صحيحًا وقم بتسجيله في دفتر ملاحظاتك. تسجل الكلمة الأساسية CCD-TEMP درجة حرارة CCD عند الحصول على الصورة. سجل ذلك في دفتر ملاحظاتك ولاحظ الوحدات. تحقق من الكلمة الأساسية TELESCOP ، يجب أن تحتوي على ما كتبته لـ "وصف التلسكوب". اكتب في دفتر ملاحظاتك إذا وافق TELESCOP على FOCALLEN وما كتبته في دفتر ملاحظاتك حول العدسة المستخدمة للصورة. طالما أنك تهتم أثناء أخذ البيانات ، فإن البيانات الوصفية في ملفات FITS توفر طريقة لطيفة للتحقق من أنك تعمل مع ملفات البيانات الصحيحة.

برنامج المثال الثاني - صورة الاختلاف

الآن قم بتنزيل diffimage.py وتحميله في المحرر الخاص بك. قم بتعديل السطرين 12 و 13 لقراءتهما في الصورتين لنمط الاختبار الذي التقطته في المعمل الأول. يقرأ هذا البرنامج في صورتين ، ويستخرج بيانات الصورة ، ويحسب مصفوفة جديدة تمثل الفرق في الصورتين ، ثم يرسم كل الصور الثلاث. يتم حساب صورة الفرق في السطر 33. لاحظ مدى بساطة الرمز. العنصر الجديد الآخر في الكود هو استخدام plt.figure (#) لرسم عدة نوافذ على الشاشة. لاحظ أنه يلزم عرض plt.show () واحد فقط لعرض الصور الثلاث.

ألق نظرة على صورك الثلاث. إذا كانت الصورتان اللتان التقطتهما بجهاز CCD تحت ظروف متطابقة تمامًا ، فيجب أن يختفي نمط الاختبار في صورة الفرق. هل حدث هذا؟ اكتب استنتاجاتك وأي أفكار حول كيفية تحسين عملية الطرح في دفتر ملاحظاتك. أيضًا ، هل يمكنك التفكير في بعض التطبيقات الفلكية لتصوير الفرق؟

برنامج المثال الثالث - الرسم البياني للصورة

الآن سنستخدم python لحساب بعض الإحصائيات ورسم مخطط بياني لقيم البكسل في صورنا. احصل على Histimage.py. يجب أن تكون الأجزاء الأولى مألوفة. قم بتحرير السطر الذي يقرأ ملف FITS لاستخدام ملف الصورة الخاص بك. تبدأ المواد الجديدة في السطر 26. تحتاج إجراءات numpy / matplotlib لإنشاء مدرج تكراري وحساب الإحصائيات إلى مصفوفات أحادية البعد كمدخلات. في السطر 26 ، نجد حجم المصفوفة ثنائية الأبعاد img. يُرجع إجراء img.shape قيمتين في "مجموعة". مجموعات Python هي مجموعات من القيم مفصولة بفواصل وأحيانًا تكون محاطة بأقواس. في السطر 26 ، يتم تعيين nx على القيمة الأولى في المجموعة ويتم تعيين ny على القيمة الثانية. في السطر 27 ، نقوم بعمل مجموعة جديدة (1-د) imgh. لها نفس قيم مصفوفة الصور ثنائية الأبعاد ، لكنها مرتبة مثل البط على التوالي.

يتبع ذلك بضعة أسطر لحساب إحصائيات قيم الصورة. يجب أن يكون الحد الأدنى والحد الأقصى والمتوسط ​​شرحًا ذاتيًا. يعطي std الانحراف المعياري لمجموعة من البيانات. الانحراف المعياري هو مقياس لتقلبات البيانات حول القيمة المتوسطة. إنه الجذر التربيعي لمتوسط ​​الانحرافات التربيعية عن المتوسط ​​، أي ، std = sqrt (المتوسط ​​((x-mean (x)) ** 2)) ، حيث ** هو عامل Python لرفع رقم إلى a قوة. سجل إحصائيات قيم البكسل لصورتك.

ثم نرسم الرسم البياني. المدرج التكراري هو تمثيل رسومي لتوزيع مجموعة من القيم. في هذه الحالة ، القيم هي قراءات الكثافة من CCD لكل بكسل. إذا قمت بترتيبها في مصفوفة ثنائية الأبعاد ، فستحصل على صورة. يتجاهل المدرج التكراري المعلومات المكانية ويظهر فقط توزيع القيم نفسها ، ولا سيما التردد الذي تحدث به كل قيمة (أو نطاق من القيم). روتين matplotlib يرسم الرسوم البيانية. الوسيطة الأولى هي 1-d من القيم ، بينما تقوم الوسائط الأخرى بتعيين معلمات الرسم. والأهم من ذلك هو "الصناديق" التي تحدد عدد الصناديق في الرسم البياني. بشكل افتراضي ، سيتم تباعد الحاويات بالتساوي بين قيم الإدخال الأدنى والأعلى.

عند حساب إحصائيات مجموعة البيانات ، غالبًا ما يفضل المرء تجاهل العوامل الخارجية ، على سبيل المثال وحدات البكسل التي تحتوي على قيم عالية لأنها مشبعة أو "ساخنة" أو وحدات بكسل ذات قيم منخفضة لأنها تالفة. افحص الرسم البياني لقيم البكسل. هل هناك قيم متطرفة؟ في السطور 41-44 ، قمنا بتعيين نطاق مسموح به لقيم البكسل "الجيدة" (بين plow و phi) ثم قمنا بإنشاء مصفوفة جديدة ، imghcut ، مع الاحتفاظ بالقيم في هذا النطاق فقط. اضبط قيم المحراث والفاي وفقًا للرسم البياني الخاص بك وقم بتسجيلها. لاحظ أنه يتم عرض الإحداثيات الحالية لمؤشر الماوس في نافذة الرسم عند تحريك الماوس فوق المخطط. بعد ذلك ، قم بتشغيل histimage.py مرة أخرى وقم بتسجيل إحصائيات قيم البكسل لصورتك عند الاحتفاظ فقط بالبكسل "الجيد".

جرب الآن بايثون بنفسك

اقض بقية المختبر في تعلم لغة الثعبان. سنستخدم Python طوال الفصل الدراسي ، لذلك فهو استثمار جيد لوقتك. طريقة جيدة للقيام بذلك هي أن تحدد لنفسك هدفًا ثم تحاول كتابة الكود المطلوب. أيضًا ، سيكون من المفيد الاطلاع على Code Academy و NumPy (الروابط موجودة على صفحة الويب الخاصة بالفصل الرئيسي).

لا يوجد فصل دراسي في يوم العمال ، لذلك سيكون من الجيد قضاء 12 ساعة خلال الأسبوعين المقبلين في تعلم الثعبان. هناك تمارين الثعبان مستحقة في 9/14 لتشجيع هذا.

تمارين بايثون المقرر إجراؤها في المعمل التالي:

1) أضف رمزًا إلى برنامج رسم المدرج التكراري للإفراط في الرسم البياني للقيمة المتوسطة على الرسم البياني. بعد الحصول على ذلك ، أضف المزيد من التعليمات البرمجية لرسم المتوسط ​​- الانحراف المعياري مع الخطوط المتقطعة. تقدم هذه المؤامرة توضيحًا رسوميًا لطيفًا لكيفية أن الانحراف المعياري هو مقياس لتقلبات البيانات حول القيمة المتوسطة. ثم أضف رمزًا لحساب الوسيط (القيمة بحيث يكون نصف البيانات أعلى والنصف الآخر يقع أدناه). ارسم الوسيط وانظر كيف يقارن بالمتوسط. اطبع الكود الخاص بك ونسخة من قطعة الأرض الخاصة بك مع الانحرافات المعيارية والمتوسط ​​لتسليمها.

2) في المختبر التالي ، سوف تحتاج إلى عمل مخططات للقيم. اكتب رمزًا لإنشاء مصفوفة من الأعداد الصحيحة من 1 إلى 10 ، واعثر على مربعاتها ، ثم ارسم المربع مقابل القيمة. اطبع الكود الخاص بك ونسخة من قطعة الأرض لتسليمها.


الوحدات والمكتبات الفلكية في بايثون

هناك العديد من المكتبات الفلكية الخاصة في عالم بايثون ، تم تطويرها في الغالب في سياق العمل البحثي في ​​المعاهد وإتاحتها للمجتمع. أقوم بنشر بعض عناوين URL هنا. يتم وصف البرامج على صفحات الويب المقابلة ويمكن تنزيلها وتثبيتها في بيئة Python الخاصة بك وفقًا لإرشادات التثبيت.

ربما يكون النظام الأكثر شمولاً نجمي: https://www.astropy.org/

تحتوي حزمة Astropy على الوظائف الرئيسية والأدوات الشائعة اللازمة لأداء علم الفلك والفيزياء الفلكية باستخدام Python. إنه في صميم مشروع Astropy ، الذي يهدف إلى تمكين المجتمع من تطوير نظام بيئي قوي من الحزم التابعة التي تغطي مجموعة واسعة من الاحتياجات للبحث الفلكي ومعالجة البيانات وتحليل البيانات.

PyAstronomy (PyA) عبارة عن مجموعة من الحزم المتعلقة بعلم الفلك.

الهدف من PyAstronomy هو توفير مجموعة من الحزم التي تفي بمعيار معين في جودة الكود والتوثيق. بهذه الطريقة ، نريد (مجموعة PyA) التأكد من أن حزم PyA تشكل أداة ممتعة لتعزيز كفاءة عملك / عملك وليس مصدرًا آخر للتجارب المؤلمة.

ظهرت PyA من عمل بعض الأشخاص في Hamburger Sternwarte. لم يتم تصميمه لتغطية مجال معين ، لكننا قمنا بدمج الأدوات ، والتي وجدناها مفيدة أثناء عملنا. لدى الأشخاص الآخرين احتياجات مختلفة ، كما أن احتياجاتنا تتطور. لذلك ، نتوقع أن تنمو PyA من خلال مساهماتنا الخاصة ، كما نأمل ، مساهمات الآخرين.

على سبيل المثال، أستروبلان يمكن استخدامها لتخطيط الملاحظات: https://astroplan.readthedocs.io/en/latest/index.html

Astroplan هي حزمة Python مفتوحة المصدر لمساعدة علماء الفلك في تخطيط الملاحظات.

الهدف من Astroplan هو إنشاء صندوق أدوات مرن لتخطيط المراقبة والجدولة. عند اكتماله ، يكون الهدف هو أن يكون من السهل على مبتدئين بايثون والمراقبين الجدد الالتقاط ، ولكن قويًا بما يكفي للمراصد التي تعد جداول ليلية وطويلة المدى.

    • احسب صعودًا / ضبطًا / أوقات عبور الزوال ومواقع alt / az للأهداف في المراصد في أي مكان على الأرض
    • وظائف راحة التخطيط المدمجة لمخططات تخطيط المراقبة القياسية (الكتلة الهوائية ، الزاوية المنعزلة ، خرائط السماء).
    • تحديد قابلية الملاحظة لمجموعات الأهداف بالنظر إلى مجموعة تعسفية من القيود (مثل الارتفاع ، والكتلة الهوائية ، وفصل / إضاءة القمر ، وما إلى ذلك).

    ل أغراض التحليل الطيفي عناوين URL التالية ذات أهمية:

    specutils هي حزمة Python لتمثيل وتحميل ومعالجة وتحليل البيانات الطيفية الفلكية. توفر حاويات البيانات العامة والوحدات النمطية المصاحبة لها صندوق أدوات يمكن للمجتمع الفلكي استخدامه لبناء المزيد من الحزم الخاصة بالمجال.

    يصف Baseline Fitting تركيب خط الأساس والتركيب المستمر.

    يصف النموذج المناسب العملية العامة لتركيب النموذج.

    القياسات هي مجموعة أدوات لأداء EQW والعمود والقياسات الأخرى ...

    تحتوي الوحدات على فئة المحور الطيفي بالغة الأهمية والتي تُستخدم للتعامل مع تحويلات الإحداثيات

    Linetools عبارة عن حزمة قيد التطوير لتحليل أطياف 1-D. يعمل مطوروها الأساسيون بشكل أساسي على أبحاث خط امتصاص الأشعة فوق البنفسجية / البصرية / الأشعة تحت الحمراء ، لذلك تهدف معظم الوظائف إلى تحديد وتحليل خطوط الامتصاص. الهدف النهائي هو توفير مجموعة من الأدوات المفيدة لكل من خطوط الامتصاص والانبعاث.

    iSpec هي أداة لمعالجة وتحليل الأطياف النجمية. فيما يلي بعض الوظائف الرئيسية لعلاج الأطياف:

      • إزالة الأشعة الكونية
      • التطبيع المستمر
      • تدهور القرار
      • تحديد السرعة الشعاعية وتصحيحها
      • تحديد الخطوط التلورية
      • جارى الاختزال

      مكتبة التحليل الطيفي والفيزياء الفلكية لبايثون 3
      حزمة Python هذه عبارة عن قاعدة شفرة موسعة للقيام بعلم الفلك الحسابي ، وخاصة التحليل الطيفي. يحتوي على كلا من
      فئة الطيف للتعامل مع الأطياف ككائنات (مع تحديد عمليات + ، - ، * ، / ، إلخ & # 8230) ومجموعة متزايدة من أدوات التحليل.


      رسم البيانات الفلكية باستخدام بايثون - علم الفلك

      تتطلب عملية تقليل البيانات وتحليلها معالجة البيانات الخام. مع ظهور أجهزة الكشف الرقمية ، أصبح هذا مناسبًا تمامًا لأجهزة الكمبيوتر والبرامج.

      تاريخياً ، تم تطوير حزم برامج مختلفة خصيصًا لمعالجة الصور الفلكية ، على سبيل المثال

      • IRAF. على وجه الخصوص ، لاحظ واجهة PYRAF Python
      • XVISTA
      • جايا
      • فيغارو: معهد كاليفورنيا للتكنولوجيا
      • ميداس: أوروبي
      • AIPS: راديو
      • الحزم الإضافية: STSDAS (تلسكوب الفضاء) ، PROS (الأشعة السينية) ، DAOPHOT (قياس الضوء النجمي) ، SeXtractor (الكشف عن المصدر).

      كل هذه العناصر لها تخصصات وإيجابيات وسلبيات مختلفة: التوافر والتكلفة وواجهة المستخدم الرسومية / سطر الأوامر ومعالجة البيانات (القرص مقابل الذاكرة) والسرعة وسهولة الاستخدام (على سبيل المثال ، الكلمات الرئيسية مقابل ملفات parm) واللغة والوصول إلى الكود الحالي القدرة على إضافة كود جديد ، نصوص / إجراءات (لغة الرقابة الداخلية). تعرفت معظم هذه الحزم على قيمة البرمجة النصية وعمليات التكرار للعديد من الصور ، ونتيجة لذلك ، تضمنت بعض إمكانيات البرمجة النصية المضمنة.

      مع تطور لغات البرمجة النصية مثل IDL و Python ، تحولت الأشياء تدريجياً بعيدًا عن الحزم الخاصة بعلم الفلك نحو إجراءات مكتوبة بلغة البرمجة العامة ، أو على الأقل قابلة للاستدعاء منها.

      بعض مهام معالجة الصور بسيطة وبعضها معقد. بالنسبة للمهام المعقدة ، من الملائم استخدام الأدوات المعدة مسبقًا. لكن من المهم بشكل عام التعرف على ما تفعله أداة معينة ، وإذا كان من الممكن أن يكون لها قيود: لا يجب أن تكون مقيدًا بما تختار القيام به من خلال الأداة التي تشعر بالراحة معها ، لذلك احرص دائمًا على فتح إمكانية استخدام الأدوات الأخرى ، أو تحسين قدرة الأداة!

      ما هي البرامج التي يجب أن تتعلمها؟ في هذه الأيام ، تتطلب العديد من الأدوات مهامًا متضمنة إلى حد ما لتقليل البيانات. في كثير من الأحيان ، يقوم فريق الجهاز أو المرصد بتزويد إجراءات روتينية (في بعض الحزم) للقيام بهذه المهام. بشكل عام ، قد يكون من الأسهل استخدام هذه الإجراءات بدلاً من إعادة برمجتها باستخدام أداتك المفضلة! لذلك من المحتمل أن تكون في وضع يجب أن تكون مرتاحًا لأدوات متعددة.

      هناك طريقة بديلة للنظر إلى الأشياء وهي أن تكون في المقدمة ، فمن المحتمل أن تعمل بأدوات جديدة و / أو تقنيات جديدة. قد يكون من غير المحتمل أن يحقق استخدام التحليل القياسي أقصى فائدة ، أو حتى يعمل على الإطلاق ، مع البيانات الجديدة. لذلك تريد أن تكون في وضع تتمتع بالمرونة لتطوير الأدوات بنفسك.

      هناك العديد من بيئات البرمجة التي تجعل من السهل إلى حد ما التعامل مع البيانات الفلكية. هنا ، سنقدم مقدمة لاثنين من أكثر البيئات شيوعًا في الولايات المتحدة: Python (مفيدة بشكل خاص مع PyRAF) و IDL. يتيح لك العمل في إحدى هذه البيئات كتابة استخدام الإجراءات الروتينية الحالية ، وكذلك تطوير إجراءاتك الخاصة. من المهم أيضًا أن يكون لديك أدوات لتتمكن من استكشاف البيانات.

        الأساسيات
          ابدأ بيثون باستخدام: ipython & ndashmatplotlib

        • النوع (var) يعطي نوع المتغير
        • فار؟ يعطي معلومات عن المتغير (iPython فقط)
        • var. & lttab & gt يعطي معلومات عن السمات والطرق المتغيرة
        • يناسب: الرأس / البيانات ، وأنواع البيانات ، و HDUList ، إلخ.
          • من astropy.io import fits
          • hd = fits.open (اسم الملف) يعيد HDULIST
          • hd [0] .data هي بيانات من HDU الأولي في مصفوفة عددية
          • hd [0] .header هو رأس من HDU الأولي في مصفوفة منظمة غير مترابطة
          • من Astropy.io import ascii
          • a = ascii.read (اسم الملف) إرجاع جدول بأعمدة
          • طرق مصفوفة عددية: على سبيل المثال:
            • data.sum (): المجموع
            • data.mean (): متوسط
            • data.std (): الانحراف المعياري
            • np.median (بيانات): متوسط
            • عرض بدائي عبر imshow
              • plt.imshow (hd [0] .data ، vmin = min ، vmax = max)
              • من استيراد pyds9 *
              • d = DS9 () (يفتح نافذة DS9 ، يرتبط بالكائن د)
              • d.set ("fits filename") (العرض من الملف)
              • d.set_pyfits (hd) (عرض من HDULIST)
              • d.set_np2arr (hd [0] .data) (العرض من مجموعة numpy)
              • d.set ("scale limits 400500") (يحدد نطاق العرض)
              • قائمة الأوامر
              • استيراد نظام التشغيل
              • os.environ ["PYTHONPATH"] = / home / holtz / python
              • من استيراد holtz.pyvista.tv *
              • ر = tv.TV ()
              • t.tv (hd [0] ، الحد الأدنى = 400 ، الحد الأقصى = 500)
              • t.tv (hd [0] .data)
              • تكبير ، عموم ، شريط ألوان
              • وامض المخازن المؤقتة للصور مع +/-
              • plt الشكل
              • plt.plot (hd [0] .data [:، 100] (للمخطط بطول العمود 100)
              • plt.plot (hd [0] .data [500 ،:] (لقطعة أرض بطول الصف 500)

              دعنا نواصل العمل مع الصور في / home / holtz / raw / apo / a535 / spicam / UT061215.

                اقرأ في عدة صور: SN17135_r.0103.fits و flat_r.0015.fits و bias.0001.fits. اعرضها من داخل بيئة برمجية (Python / pyds9 / tv / imshow أو IDL / atv) وتعرّف على استخدام ذلك.


              رسم البيانات الفلكية باستخدام بايثون - علم الفلك

              APLpy (مكتبة الرسم الفلكي في Python) هي وحدة Python النمطية تهدف إلى إنتاج مؤامرات بجودة النشر لبيانات التصوير الفلكي بتنسيق FITS. تستخدم الوحدة Matplotlib ، وهي حزمة تخطيط قوية وتفاعلية. إنه قادر على إنشاء ملفات إخراج بعدة تنسيقات رسومية ، بما في ذلك EPS و PDF و PS و PNG و SVG.

              الخصائص الرئيسية

              • قم بعمل المؤامرات بشكل تفاعلي أو باستخدام البرامج النصية
              • إظهار الصور ذات التدرج الرمادي ، وتدرج الألوان ، و 3 ألوان RGB لملفات FITS
              • قم بإنشاء مكعبات FITS محاذاة بشكل مشترك لعمل صور RGB ثلاثية الألوان
              • قم بعمل مؤامرات من ملفات FITS باستخدام WCS التعسفي (مثل سرعة الموضع)
              • قم بتقطيع مكعبات FITS متعددة الأبعاد
              • قم بتراكب أي عدد من مجموعات الكنتور
              • تراكب علامات برموز قابلة للتخصيص بالكامل
              • ارسم أشكالًا قابلة للتخصيص مثل الدوائر والأشكال البيضاوية والمستطيلات
              • تراكب ملفات المنطقة ds9
              • تراكب تنسيق الشبكات
              • إظهار أشرطة الألوان ، والمقاييس ، والحزم
              • تخصيص مظهر التسميات والقراد
              • إخفاء وإظهار وإزالة طبقات الكفاف والعلامات المختلفة
              • قم بتحريك أي عرض وتكبيره / تصغيره وحفظه كمخطط كامل لجودة النشر
              • احفظ المؤامرات بصيغة EPS و PDF و PS و PNG و SVG

              لطلب الميزات ، يرجى ترك طلب هنا.

              ابدء

              هل تريد أن تبدأ؟ ثم اتبع التعليمات الموجودة على الصفحة ، ثم تحقق من صفحة البرنامج التعليمي حول كيفية عمل بعض المؤامرات الرائعة والبسيطة.

              الإبلاغ عن المشاكل

              إذا واجهت مشاكل مع APLpy ، فالرجاء ترك تقرير خطأ هنا.

              مصدر الرمز

              إذا كنت جريئًا وتعرف ما تفعله باستخدام Python ، فيمكنك تنزيل شفرة المصدر المتطورة باستخدام Git.

              بوابة استنساخ git: //github.com/aplpy/aplpy.git APLpy

              الاعتراف باستخدام APLpy

              إذا كنت تستخدم APLpy لمنشور ، فيمكنك استخدام الإقرار التالي:

              استخدم هذا البحث APLpy ، وهي حزمة تخطيط مفتوحة المصدر لـ Python (Robitaille and Bressert ، 2012)

              حيث (Robitaille and Bressert ، 2012) هو اقتباس من إدخال ADS / ASCL هذا.


              في هذا الموقع ، ستجد مجموعة من الروابط والموارد لمساعدتك على تطوير مهاراتك في بايثون ، وتطبيقها على العديد من المشاريع الفلكية & # 8211 تحديد الكويكبات ، والعمل مع الصور الفلكية ، واستخدام بيانات التقويم الفلكي لتحديد موقع الكويكبات والمذنبات والكواكب في السماء. توجد هنا موارد تتضمن كتالوجات رئيسية من الكويكبات ، ودفاتر بايثون لمحاكاة مدارات كائنات النظام الشمسي ، وقواعد بيانات ناسا الفلكية لتمكين أبحاث النظام الشمسي الجديدة.

              لقد قسمت هذا إلى أقسام ، وقدمت روابط ونصائح للبدء أدناه.

              الشروع في العمل في بايثون

              ربما تكون قد تعرفت بالفعل على بايثون ، ولكن إذا لم يكن الأمر كذلك ، فهناك العديد من المقدمات المفيدة للغة ، والكثير من المواد المتاحة لمساعدتك على التعلم. نظرًا لأن Yale-NUS College حصلت على دورة تدريبية قصيرة بواسطة Marla Geha على Python ، فسوف أقوم بتضمين الكثير من المواد الخاصة بها ، لأنها توفر نقطة دخول لطيفة للغاية إلى Python بميل فلكي.

              تحتوي معظم أجهزة الكمبيوتر وجميع أنظمة MacOS على Python مضمنة. ومع ذلك ، يُعرف نظام واحد يحظى بتقدير كبير ويكتمل في جميع حزمه باسم تثبيت Anaconda Python. أوصي بشدة بهذا لأنه يجعل تجربة سلسة ، ولديه دفاتر لطيفة للغاية ومتقدمة المظهر لتصور ما تفعله. في معهد كاليفورنيا للتكنولوجيا ، يستخدم معسكر ZTF التدريبي هذا التوزيع أيضًا. إنه متاح على https://store.continuum.io/cshop/anaconda/.

              بمجرد تثبيت هذا ، يمكنك استخدام الدليل من Marla Geha من Yale لمساعدتك في معرفة المزيد عن Python. يتضمن ذلك بعض تمارين معالجة الصور ، باستخدام البيانات من كل من الدورة التدريبية القصيرة في Yale-NUS وأيضًا من أرشيف HST. تتوفر جميع هذه الموارد في موقع الدورة القصيرة لـ Yale-NUS August. Her Pre-course Python guide – marla.geha.python.exercises.Precoursework_1 will help guide you through some of the introductory Python exercises. She also has a Research Methods site at Yale that has a number of very useful Python exercises – this is available at http://www.astro.yale.edu/mgeha/A255/problemsets.html.

              There are two ways to run Python – File Mode: by creating a .py file one can run it in a command line mode with a command like python file.py Notebook Mode: by creating a Python notebook, one can run the notebook using “ipython” or interactive python. These files will end in the prefix ipynb, can also be run with ipython file.ipynb. Within a notebook you will see input and output commands. A short example is below. These sections of a notebook are known as “cells” and can be run by highlighting the cell (here labelled In [4]) and punching the “Play button” on the top of the window (the triangle pointing right). The results will show up immediately below in the cell labelled Out (here Out [4] which prints out a table).

              Sometimes on the site github you will find python notebooks. These are a bit hard to figure out at first, but can be run by punching in the inputs into a new notebook, after visualizing the notebook using something called nbviewer. This program is available at http://nbviewer.ipython.org/ and can be used by pasting in the URL of the github python notebook nbviewer will render the file into a comprehensible format for you, and enable you a chance to experiment with it.

              Additional guides and links to Astronomy and Python are below:

              Marla Geha gave a wonderful short course at Yale-NUS on doing image processing in Astronomy with Python. Below are links to Marla’s Yale-NUS Python exercises: http://www.astro.yale.edu/mgeha/Singapore/problemsets.html

              Marla recommends this source for learning Python:
              http://learnpythonthehardway.org/book/

              Guide from ipython describing the “notebook” – a very useful tool for visualizing code in Python: http://ipython.org/ipython-doc/dev/notebook/index.html

              A basic bouncing ball program for Python – a good starting point: http://python4astronomers.github.com/contest/bounce.html

              You can learn about basic Python tables and plotting in this guide: http://www.astropy.org/astropy-tutorials/plot-catalog.html

              You can learn how to work with Astronomy fits images and make a ‘tricolor’ image in Python out of three monochrome images with this tutorial:http://www.astrobetter.com/making-rgb-images-from-fits-files-with-pythonmatplotlib/

              More Advanced Image Processing Notebooks – including SDSS and PTF data access

              For a more advanced user, we have several GREAT notebooks that work very well to demonstrate image display, photometric analysis, and integration with large databases such as SDSS and PTF. Within these routines are calls to routines in pyraf and to the image display program known as DS9. Below are links to the installation guides and software repositories.

              American Astronomical Society Python code from workshop entitled “Using Python for Astronomical Data Analysis” – This day-long workshop included a fantastic set of notebooks that led us through all aspects of finding sources in images, extracting photometry catalogs etc. The notebooks and installation instructions are below:

              Caltech ZTF/PTF Summer School (a.k.a “boot camp”) in Python and Astronomy notebooks include very detailed notebooks which document the techniques of time-domain astronomy and astrophysics. These notebooks include light curve generation, identification of variable sources within databases, and creation of color-color diagrams.

              Main Site for 2016 Summer School with notebooks and code – https://sites.google.com/site/pythonbootcamp/

              Additional Add-on Python Packages

              The standard Python distribution from Anaconda has numpy (the numerical package) but may lack some of the other packages you will need for working with astronomy data in Python. These packages include astropy – the astronomy python package pyfits – a package for handling FITS formatted astronomy images and ephem – an ephemeris package for Python. To install these packages, you will download a big file with an ending like .tar.gz, and move it to the part in your anaconda distribution where packages are stored. This is a directory just below your main directory “anaconda” called anaconda/pkgs. Store the .tar.gz file in this directory anaconda/pkgs, and then unpack it using the commands gunzip and tar. You can “gunzip” the files with a command like gunzip file.tar.gz, and unpack them using a command like tar -xvf file.tar. This will separate all the files you will need. Then change into the directory for the package (for pyfits, I have a directory called pkgs/pyfits-3.3), and once in that directory you can install the package with the command ipython setup.py install.

              Main package download sites are at these locations:

              Pyfits – http://www.stsci.edu/institute/software_hardware/pyfits – note: many features of this package are now in Astropy.

              Orbital Elements and Ephemeris Data

              For solar system work, one of the first steps is computing the ephemeris data for an object. This can be done using JPL’s Horizons Database, perhaps the best site for this with absolutely accurate data. You can access that database on the web at the site: http://ssd.jpl.nasa.gov/?horizons or http://ssd.jpl.nasa.gov/horizons.cgi. You can also see a very complete guides to orbits at the site http://www.braeunig.us/space/orbmech.htm and some interesting simulations at http://physics.info/orbital-mechanics-1/practice.shtml .

              Many planetarium programs enable asteroids, spacecraft and comets to be simulated in their orbits. A few of the most common ones are listed below:

              • Sky Safari: http://www.southernstars.com/products/skysafari/ – a good iOS system
              • Stellarium: http://www.stellarium.org – free open source planetarium program
              • TheSky: http://www.bisque.com/sc/pages/TheSkyX-Editions.aspx – industry-grade telescope control and planetarium simulator
              • Celestia: http://www.shatters.net/celestia/download.html – free open source with beautiful 3D renderings of planets

              An astronomical object is specified by its orbital elements. Those can be found at the JPL Horizons site at http://ssd.jpl.nasa.gov/?sb_elem. Each astronomical object can be completely specified by a set of orbital elements. Those are described below in brief. More details can be found on the web site linked above.

              VERY COOL Sites with a LOT of interesting stuff .

              For anyone who has read this far, and would like to really push the envelope, I have found a number of sites with what look like amazing resources for asteroid, and outer solar system work. I would be very excited to see students work with these sites and help get their various databases and Python notebooks working. They include vast databases of near earth asteroids, amazing solar system orbit simulators and much more!

              https://github.com/mwcraig – Matthew Craig’s github repository – highly recommended by experts at the AAS meeting!

              https://media.readthedocs.org/pdf/specviz/v0.1.2rc3/specviz.pdf – documentation for a spectral viewing package from STScI known as Specviz

              nolan/astorb.html – a cool database of asteroid orbital elements

              http://docs.astropy.org/en/v0.3/coordinates/ – nice document for working in astropy with coordinates.

              http://www.jzuhone.com/pages/scientific-education.html – an interesting site for an interactive Kepler’s Law demonstration. Again can be modified for some more advanced purposes.

              http://www.inference.phy.cam.ac.uk/mackay/python/ – a compendium of python programs including some simulations for astronomy.

              http://www.inference.eng.cam.ac.uk/teaching/comput/C++/python/index.shtml – a nice example of orbit simulation with a very simple program and the package vpython. Works!

              seb/celestia/transforming_ephemeris.html – guide for importing ephemeris data into the Celestia program.

              Orbital Elements Information — From the NASA horizons site:

              Orbital elements below are available as fixed-format ASCII tables. Asteroid elements are available as Keplerian elements while comet elements use perihelion distance and time of perihelion passage instead of semimajor axis and mean anomaly. See the table column headings description below. Magnitude parameters, H and G, are included in the asteroid tables. If you need other parameters, you should use the small-body search engine , mentioned above.

              (The files above were updated on 2015-Feb-11 02:32 -0800.)

              Sample Asteroid File Header for an Orbital Elements File

              Num Name Epoch a e i w Node M H G Ref

              1 Ceres 55400 2.7653485 0.07913825 10.58682 72.58981 80.39320 113.4104434 3.34 0.12 JPL 30

              2 Pallas 55400 2.7721532 0.23099956 34.84090 310.15094 173.12950 96.1482660 4.13 0.11 JPL 25

              3 Juno 55400 2.6700912 0.25498122 12.98211 248.10807 169.91138 32.0960832 5.33 0.32 JPL 86

              Sample Comet File Header for an Orbital Elements File

              Num Name Epoch q e i w Node Tp Ref

              1P/Halley 49400 0.58597811 0.96714291 162.26269 111.33249 58.42008 19860205.89532 JPL J863/77

              2P/Encke 55460 0.33586872 0.84833156 11.78308 186.54970 334.56582 20100806.50196 JPL K105/1

              3D/Biela -9480 0.87907300 0.75129900 13.21640 221.65880 250.66900 18321126.61520 IAUCAT03

              ASCII File Column Headings

              Number assigned to the asteroid or comet. Numbers are only assigned to secure short-period (<200 year) comets.

              Name given to the numbered asteroid or comet.

              Unnumbered asteroid’s preliminary designation.

              Epoch of the elements represented as the Modified Julian Date (MJD), which is defined as the Julian date – 2400000.5.


              1. Computig the Mean and Median Stacks from a set of noisy FITS files

              In this assignment, we shall focuss on calculating the mean of a stack of FITS files. Each individual file may or may not have a detected a pulsar, but in the final stack we should be able to see a clear detection.

              Computig the Mean FITS

              The following figure shows 5 noisy FITS files, which will be used to compute the mean FITS file.

              The following figure shows the mean FITS file computed from thes above FITS files. Mean being an algebraic measure, it’s possible to compute running mean by loadig each file at a time in the memory.

              Computing the Median FITS

              Now let’s look at a different statistical measure — the median, which in many cases is considered to be a better measure than the mean due to its robustness to outliers. The median can be a more robust measure of the average trend of datasets than the mean, as the latter is easily skewed by outliers.

              However, a naïve implementation of the median algorithm can be very inefficient when dealing with large datasets. Median, being a holistic measure, required all the datasets to be loaded in memory for exact computation, when implemeted i a naive manner.

              Calculating the median requires all the data to be in memory at once. This is an issue in typical astrophysics calculations, which may use hundreds of thousands of FITS files. Even with a machine with lots of RAM, it’s not going to be possible to find the median of more than a few tens of thousands of images.This isn’t an issue for calculating the mean, since the sum only requires one image to be added at a time.

              Computing the approximate runing median: the BinApprox Algorithm

              If there were a way to calculate a “running median” we could save space by only having one image loaded at a time. Unfortunately, there’s no way to do an exact running median, but there are ways to do it approximately.

              The binapprox algorithm does just this. The idea behind it is to find the median from the data’s histogram.

              First of all it ca be proved that media always lies within one standard deviation of the mean, as show below:

              The algorithm to find the running approximate median is show below:

              As soon as the relevant bin is updated the data point being binned can be removed from memory. So if we’re finding the median of a bunch of FITS files we only need to have one loaded at any time. (The mean and standard deviation can both be calculated from running sums so that still applies to the first step).

              The downside of using binapprox is that we only get an answer accurate to σ/ B by using ب bins. Scientific data comes with its own uncertainties though, so as long as you keep large enough this isn’t necessarily a problem.

              The following figure shows the histogram of 1 million data points generated randomly. Now, the binapprox algorithm will be used to compute the running median and the error in approximation will be computed with different number of bins ب.

              As can be seen from above, as the number of bins ب increases, the error في
              تقريب of the running median decreases.

              Now we can use the binapprox algorithm to efficiently estimate the median of each pixel from a set of astronomy images in FITS files. The following figure shows 10 noisy FITS files, which will be used to compute the median FITS file.

              The following figure shows the median FITS file computed from the above FITS files using the binapprox algorithm.


              Astronomy 1221 - Astronomy Data Analysis

              Astronomy 1221, Astronomy Data Analysis, is a one-semester overview of data analysis in astronomy. The course will cover select topics in modern astronomy, combined with contemporary data analysis methods, illustrate how these data lead to scientific conclusions, and the limitations of data. The intended audience for the course is students with an interest in astronomy and the analysis of large datasets. The course will use the Python programming language. No prior knowledge of astronomy or Python is necessary.

              Course Objectives

              By the end of this course, students should successfully be able to:

              • Understand the basic facts, principles, theories, and methods of modern science.
              • Understand key events in the development of science and recognize that science is an evolving body of knowledge.
              • Describe the interdependence of scientific and technological developments.
              • Recognize the social and philosophical implications of scientific discoveries and understand the potential of science and technology to address problems of the contemporary world.

              Astronomy 1221 will meet these expected outcomes by combining an overview of modern astronomy with the data and analysis methods used to draw these conclusions. Example astronomy topics include the solar system, stars, exoplanets, the Milky Way, galaxies, dark matter, and cosmology. These will be taught alongside analysis topics such as basic statistical methods, time series analysis, databases, classification methods, and machine learning.

              Among the questions that you should be able to answer by the end of the course are the following:

              • What objects make up our solar system?
              • What are stars? How are they distributed in our Galaxy?
              • What do we know about planets around other stars?
              • How do we know that Dark Matter exists?
              • What methods do astronomers use to study celestial objects?
              • What are Dark Matter and Dark Energy?

              Course Organization

              This is a 3 credit hour course each week, there will be 3 hours of lecture with occasional take-home assignments designed to explore some of the course topics in greater depth. For Arts and Sciences students in a Bachelor of Arts or Bachelor of Science program, this course meets the Arts and Sciences GE requirement of a natural sciences course without a laboratory component.

              وصف كتالوج المقرر

              Overview of data analysis in astronomy. The course will combine select topics in modern astronomy with contemporary data analysis methods implemented in the Python programming language, illustrating how astronomical data lead to scientific conclusions. It is intended for students with interest in astronomy and analysis of large data sets prior astronomy experience not required.


              An Introduction to Image Processing with Python

              In order to gain a deeper understanding of how astronomical images are processed, we will be writing our own software to do the processing. To minimize the effort in doing this, we will use the computer language Python. Python is an interactive and extensible programming language. It has extensions to load images from FITS files, process images using compact code without loops, and display images on the screen. During this week's lab, you will become familiar with the basics of python and some of the particulars about handling images in python.

              Python is free software. So, if you want to work on learning python outside of class, you can obtain it via the links on the class web page. Note that we will use Python 2.7 and not Python 3 (this is because matplotlib only recently added Python 3 support). We will use a number of python packages to process images (as numerical arrays), read FITS files, and display data. Anaconda includes python and the other needed packages. If you use straight python (e.g. under Linux), you will need to install these packages separately (which is very easy for distributions like Ubuntu). As a reminder, when we start using telescopes on the roof and elsewhere for astronomical observations and measurements, each lab team will need to have the software installed on a laptop computer. It would be good to identify a (windows) laptop in the next few days, install the software, and try it out.

              First example program - reading and plotting an image

              To get started with python, let's look at a simple program to read in an image in FITS format and plot it on the screen. The program is here: showimage.py. You should download the program and then load it into a text editor of your choice.

              The first line is a comment about what the program does. It is good practice to liberally comment your code.

              The second set of lines (3-7) tells python that we will be using a bunch of extensions. Extensions are pre-written modules to do various tasks. numpy, or 'Numerical Python' is a package to define mathematical constructions like matrices (or arrays) and make it easy to handle them in python. matplotlib is a scientific plotting package. pyfits is a package to read and write FITS files.

              The first thing that we actually do in the program is on line 12, where we read in a FITS file. The program currently reads in a file called 'testpattern1.fit'. You should edit this line to read in one of the files that you made in the last lab. Note if you are running python in the same directory as your data, you need only the file name. Otherwise, you will need to add the file's directory.

              On line 15, we copy the image data from the FITS file to a variable called img1. img1 is actually a numpy array and later on we'll discuss how to do math operations on numpy arrays (it's easy).

              The next set of lines, 18-21, plot the image. Back in the import stuff, we imported the plotting package "as plt". This allows us to use the shorthand "plt" to refer to the plotting package. All four lines call routines in the matplotlib.pyplot package using plt as shorthand. The first line sets the plotting to interactive mode this just means that the program continues on after making the plot rather than waiting for the user to look at the plot before continuing. The second line sets up the color map. Since the camera is black and white, we use a gray scale map to make realistic looking images. The third line uses the "imshow" routine to make a plot of the image data using the selected color map. The four line actually puts the plot up on the screen.

              Once you have edited the program to read in your file (edit line 12, see above), go ahead and run the program. Start up ipython. ipython is an interactive, shell interface to python that uses unix-like commands. To setup Anaconda python for the plotting interface that we use, type '%pylab' without the quotes. You will want to do this every time you start ipython or the program will freeze when you make plots. If you are not running Anaconda, this command probably isn't necessary. Some useful commands are: 'ls' - to list the contents of the current directory, 'cd' - to change the current directory, and 'pwd' - to print the current directory. Use cd to move to the directory where showimage.py is and type 'run showimage' without the quotes and press Enter. ipython should pop up a displaying the image. Note that the window is interactive: one can zoom, pan, or save the image in a variety of formats. If you have problems running the program, make sure that you are in the right directory and that you have edited the program to look for the FITS file in the correct place. Make sure the program works before proceeding. Record in your lab notebook, the procedures that you followed to display the image including the directories where showimage.py and your image are saved. Remember to start on a new page and write today's date and a short description of today's activities (like 'Intro to Python') at the top of the page.

              FITS files

              After you have run the program, it should leave you at the ipython command prompt. Now type 'print h[0].header'. The ipython screen will be filled with a bunch of information encoded in the file. FITS is a "self-documenting" file format. In addition to the image data, the file contains 'meta-data' describing the image parameters and how and when the image was obtained. These were written by CCDOps when you saved the file in the last lab. The meta-data consists of a keyword name, a value, and an optional comment.

              For example, the NAXIS keyword gives the number of axes, it should be 2. The NAXIS1 and NAXIS2 keywords give the number of pixels along the two axes of the image. Record these in your lab notebook. If you saved a full image (as instructed in the last lab), these should match the number of pixels in the CCD. Check the CCD documentation to see if that is true and record in your notebook. The CCD-TEMP keyword records the CCD temperature when the image was obtained. Record that in your notebook and note the units. Check the TELESCOP keyword, it should contain what you wrote for 'Telescope Description'. Write in your notebook if TELESCOP agrees with FOCALLEN and what you wrote in your notebook about the lens used for the image. As long as you pay attention while taking the data, the meta-data in FITS files provides a nice way to check that you are working with the correct data files.

              Second example program - difference image

              Now download diffimage.py and load it into your editor. Modify lines 12 and 13 to read in the two images of the test pattern that you took in the first lab. This programs reads in two images, extracts the image data, calculates a new array which is the difference in the two images, and then plots all three images. The difference image is calculated on line 33. Note how simply the code is. The other new element in the code is the use of plt.figure(#) to pop-up multiple windows on the screen. Note that only one plt.show() is needed to display all three images.

              Take a look at your three images. If the two images that you took with the CCD were under exactly identical conditions, then the test pattern should disappear in the difference image. Did this happen? Write down your conclusions and also any thoughts about how to improve the subtraction in your notebook. Also, can you think of some astronomical application for difference imaging?

              Third example program - image histogram

              Now we'll use python to calculate some statistics and plot a histogram of the pixel values in our images. Get histimage.py. The first parts should be familiar. Edit the line that reads the FITS file to use your image file. The new stuff starts at line 26. The numpy/matplotlib routines to make histograms and calculate statistics need to have one-dimensional arrays as input. In line 26, we find the size of the 2-d array img. the img.shape routine returns two values in a 'tuple'. Python tuples are sets of values separated by commas and sometime enclosed in parenthesis. In line 26, nx gets set to the first value in the tuple and ny gets set to the second value. In line 27, we make a new (1-d) array imgh. It has the same values as the 2-d image array img, but arranged like ducks in a row.

              Following this are a few lines to calculate statistics of the image values. min, max, and mean should be self explanatory. std gives the standard deviation of a set of data. The standard deviation is a measure of the fluctuations of the data around the average value. It is the square root of the average of the squared deviations from the mean, i.e., std = sqrt(mean((x-mean(x))**2)), where ** is Python's operator for raising a number to a power. Record the statistics of the pixel values of your image.

              Then, we plot the histogram. A histogram is a graphical representation of the distribution of a set of values. In this case, the values are the intensity readings from the CCD for each pixel. If you arrange these in a 2-d array, you get an image. A histogram discards the spatial information and only shows the distribution of the values themselves, in particular the frequency with which each value (or range of values) occurs. The matplotlib routine hist plots histograms. The first argument is a 1-d of values, the other arguments set the plot parameters. The most crucial of these is 'bins' which sets the number of bins in the histogram. By default, the bins will evenly spaced between the lowest and highest input values.

              In calculating the statistics of a data set, one often prefers to discard outlier, e.g. pixels that have high values because they are saturated or 'hot' or pixels that have low values because they are damaged. Examine the histogram of your pixel values. Are there outliers? In lines 41-44, we set an allowed range for 'good' pixels values (between plow and phi) and then make a new array, imghcut, keeping only the values in that range. Adjust the values for plow and phi according to your histogram and record them. Note that the current coordinates of the mouse cursor are displayed in the plot window when you move the mouse over the plot. Then, run histimage.py again and record the statistics of the pixel values of your image when keeping only the 'good' pixels.

              Now try Python for yourself

              Spend the rest of the lab learning python. We will be using python throughout the semester, so it is a good investment of your time. A good way to do this is to set yourself a goal and then try to write the needed code. For example, you could add some lines to the histogram plotting program that overplot the mean value on the histogram. After getting that to work, you might try also plotting the mean the standard deviation (maybe with dashed lines). That will give you a nice graphical illustration of how the standard deviation is a measure of the fluctuations of the data around the average value. Later on, we will use the median (the value such that half the data lies above and half lies below) in addition to the mean. Try calculating the median and plotting it and see how it compares to the mean. In the next lab, you will need to make plots of values. You might try making an array of the integers from 1 to 10, finding their squares, and then plotting the square versus the value.


              GeoProjection for astronomical data - wrong ticks

              Here is an excellent answer to what I wanted to do, and it works like a charm. Unfortunately, when I want to change it a bit, it fails. For setting the stage, here is the datafile, and this is my initialization code:

              Then I use the following code to produce a projection of the points onto the sky:

              which produces the following image:

              Looks perfect. Next, I simply changed Sinusoidal to Mollweide in the above code, and got the following image:

              This, contrary to the previous case, places the ticks in wrong places: they do not correspond anymore to the dashed grid lines on the projection.

              So, my question is: how to fix this so the ticks are at the right places?

              تعديل: Inspired by this post I found out that the Hammer projection suffers the same issue as the Mollweide projection, but Aitoff (very similar to Hammer ) works as fine as the Sinusoidal projection.



تعليقات:

  1. Kirwyn

    انت مخطئ. اكتب لي في PM.

  2. Coyotl

    بيننا يتحدث، فمن الواضح. أقترح عليك محاولة البحث في google.com

  3. Kaphiri

    في رأيي ، هذا مناسب ، سأشارك في المناقشة. أعلم أنه يمكننا معًا الوصول إلى الإجابة الصحيحة.

  4. Shagal

    أنا آسف جدًا لأنني لا أستطيع مساعدتك في أي شيء. آمل أن يساعدوك هنا. لا تيأس.

  5. Iasion

    كخبير ، يمكنني المساعدة.

  6. Oedipus

    شيء لا يأتي من لا شيء مثل هذا



اكتب رسالة