الفلك

معايرة الطول الموجي في Python - خوارزمية تحديد الخط

معايرة الطول الموجي في Python - خوارزمية تحديد الخط



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.

لقد طُلب مني تطوير خط أنابيب لتقليل البيانات للتلسكوب وأواجه مشكلة.

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

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

يجب أن أفعل ما يفعله "تحديد" في IRAF ، ولكن في لغة الثعبان. أعلم أنه كانت هناك بعض الحزم التي تقوم بذلك (مثل المواصفات) ، لكنها قديمة وتتذكر المكتبات المهملة.

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


معايرة الطول الموجي في بايثون - خوارزمية تحديد الخط - علم الفلك

لقد استخدمت refspectra (noao.onedspec.refspec) لربط الأقواس المرجعية بأطياف النجوم (تحتوي بعض النجوم على قوسين ، يتم حساب متوسطهما معًا)

للقيام بذلك بسهولة أكبر ، استخدمت ملف cl.

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

قمت يدويًا بعمل الملفات التالية لمعرفة كيفية القيام بذلك.
1feb05.0038.0037.ms.fits
1feb05.0038.0039.ms.fits
1feb05.0041.0040.ms.fits
1feb05.0045.0044.ms.fits

ثم استخدمت إعادة تحديد ، مع الملف الأول (1feb05.0038.0037.ms.fits) كقالب ، لمعايرة الباقي. لقد تحققت من RMS لكل نوبة ، وإذا كان كبيرًا بشكل غير عادي (أكثر من 0.5 ، كانت النقاط مبعثرة جدًا بشكل عام ، بشكل عشوائي) تحقق من الملاءمة وتحديد الخطوط أو المحذوفة.

ثم قمت بتشغيل برنامج refspec بنجاح هذه المرة.

قمت بتشغيل جهاز التوزيع لضبط مقياس الطول الموجي للنجوم ، ووجدت أن الطول الموجي لكل بكسل يساوي 0.75 ، وكان هناك قفزة إلى الصفر على الطرف الأيسر ، لذا ركضته مرة أخرى بدءًا من 3511 بدلاً من 3500.

الأسماء الجديدة هي الاسم الأصلي w +

w1feb05.0042.ms.fits و w1feb05.0043.ms.fits عبارة عن خطوط مسطحة (؟)
(بعد استخدام الأقواس المدمجة ، كانت هذه الأطياف طبيعية)
w1feb05.0056.ms.fits غير هام
w1feb05.0058.ms.fits صاخبة جدًا (كانت هذه الصورة خارج نطاق التركيز - خطوط السكك الحديدية)

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

لقد اعتدت على إعادة تحديد ما يناسب هذه الصور المختصرة.

ثم قمت مرة أخرى بتشغيل refspec باستخدام ملف .cl جديد لإعادة تعيين الصور المرجعية للنجوم التي تم تجميع أقواسها ، ثم قمت بتشغيل dispcor مرة أخرى باستخدام المراجع الجديدة.

تقفز العديد من الأطياف إلى الصفر قبل 3515 ، لذلك أعدت تشغيل المشتت بدءًا من 3515. وهناك قفزة إلى الصفر في النهاية أيضًا ، لذا اضبط الطول الموجي للنهاية على 5497.

Ran dispcor مرة أخرى ، مع تغيير المعلمات التالية:
(w1 = 3515.) الطول الموجي الأولي
(w2 = 5497.) الطول الموجي النهائي

استخدم hedit لتعيين المرصد إلى mmto (من MMT) لتجنب دخوله في كل مرة


الاستخدام

واجهة خط الأوامر

يوفر pygwinc واجهة سطر أوامر يمكن استخدامها لحساب ورسم ميزانيات ضوضاء IFO المتنوعة الموضحة أعلاه. بالنسبة لمعظم التوزيعات ، يجب أن يكون هذا متاحًا عبر gwinc في سطر الأوامر ، أو python3 -m gwinc بخلاف ذلك:

أو يمكن أيضًا معالجة الميزانيات المخصصة من خلال توفير المسار إلى وحدة / حزمة الميزانية:

يمكن حفظ مخططات الميزانية بتنسيقات مختلفة (.png ، .svg ، .pdf):

أو يمكن حفظ بيانات التتبع في ملف HDF5:

يمكن أيضًا رسم ملفات تتبع HDF5 مباشرة:

يمكن استخدام الخيار --range لتضمين قيم النطاقات الملهمة المختلفة للضوضاء الكلية في الإخراج.

يمكن معالجة معلمات IFO من سطر الأوامر باستخدام الخيار --ifo:

يمكنك أيضًا تفريغ معلمات IFO في ملف معلمة بتنسيق YAML:

تفترض ملفات YAML المستقلة وصف ميزانية "aLIGO" الاسمي.

تتضمن واجهة سطر الأوامر أيضًا وضعًا "تفاعليًا" يوفر غلاف IPython للتفاعل مع ميزانية تمت معالجتها:

انظر تعليمات الأمر لمزيد من المعلومات:

واجهة المكتبة

للتخطيط المخصص ، وتحسين المعلمات ، وما إلى ذلك ، يمكن الوصول إلى جميع الوظائف مباشرة من خلال واجهة مكتبة gwinc:

يتم استخدام مصفوفة تردد افتراضية ، ولكن يمكن توفير ترددات بديلة لـ load_budget إما في شكل مصفوفة عددية:

أو سلسلة مواصفات التردد ("FLO: [NPOINTS:] FHI"):

تأخذ وظيفة load_budget () معظم المدخلات نفسها مثل واجهة سطر الأوامر (مثل أسماء IFO ومسارات وحدة الموازنة وملفات معلمات YAML) ، وتعيد كائن الميزانية المُحدّد في وحدة الموازنة المحددة (انظر واجهة الموازنة أدناه). ميزانية ifo gwinc.Struct متاحة في السمة budget.ifo.

تقوم طريقة تشغيل الميزانية () بحساب جميع ضوضاء الميزانية وإجمالي الضوضاء وإرجاع كائن BudgetTrace بخصائص التكرار و psd و asd. تتاح الآثار الفرعية للميزانية من خلال واجهة قاموس (تتبع ['QuantumVacuum']) وعبر السمات (trace.QuantumVacumm).

يمكن تحديث سمات التكرار في الميزانية و ifo في وقت التشغيل عن طريق تمريرها كوسائط للكلمات الرئيسية إلى طريقة run ():


عبر الارتباط

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

محور الطول الموجي للرصد.

محور التدفق للرصد.

محور الطول الموجي للقالب.

محور التدفق للقالب.

rvmin : يطفو

السرعة القطرية الدنيا لحساب دالة الارتباط المتبادل [km / s].

rvmax : يطفو

السرعة القطرية القصوى التي يتم من أجلها حساب دالة الارتباط المتبادل [km / s].

drv : يطفو

عرض خطوات السرعة الشعاعية التي سيتم تطبيقها في حساب دالة الارتباط المتبادل [km / s].

الوضع : خيط، ، اختياري

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

تخطي : int ، اختياري

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

الحافة : تعويم أو مجموعة من عوامين

إذا لم يكن لا شيء ، فإن الطريقة سوف "تقلص" حواف الطيف المرصود عن طريق الضرب في دالة الجيب. إذا تم تحديد رقم عائم ، فسيحدد هذا العرض (بوحدات الطول الموجي) لاستخدامه في التقليل من كلا الجانبين. إذا تم استخدام عروض مستدقة مختلفة ، فيجب إعطاء مجموعة مكونة من رقمين (موجبين) ، مع تحديد العرض الذي سيتم استخدامه في نهاية الطول الموجي المنخفض والمرتفع. إذا تم تقديم "تخطي" غير صفري ، فسيتم تطبيقه أولاً. يمكن أن يساعد تقليص الحواف في تجنب تأثيرات الحواف (انظر ، على سبيل المثال ، Gullberg and Lindegren 2002، A & ampA 390).

محور RV لوظيفة الارتباط المتبادل. تشير السرعة الشعاعية إلى تحول في القالب ، أي أن القيم الموجبة تشير إلى أن القالب قد تم إزاحته باللون الأحمر وتشير الأرقام السالبة إلى حدوث إزاحة زرقاء للقالب. الأرقام معطاة بالكيلومتر / ثانية.

دالة الارتباط المتبادل.

خوارزمية لإيجاد النقاط القصوى بالتقريب المكافئ (quadExtreme ()).


معايرة الطول الموجي في بايثون - خوارزمية تحديد الخط - علم الفلك

مكتبة التحليل الطيفي والفيزياء الفلكية لبايثون 3

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

ملاحظة سريعة: العبوة الفرعية الإسطرليبي لم يتم تطويره بواسطتي. تم ترميزه بواسطة سيرجي كوبوسوف (segasai) في كامبريدج (ثم على الأقل). لقد وجدت أنه مفيد لإجراء تصحيحات السرعة على بيانات التحليل الطيفي الخاصة بي. لقد قمت بتعديل العديد من الوحدات النمطية بحيث يمكن استيرادها واستخدامها في Python 3.x. انظر ملف التمهيدي الخاص به.

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

تم رفع الوحدات التالية إلى مستوى الحزمة وهي متاحة للاستيراد:

SLiPy / وظائف / فئات
نطاق الموجة الطيفية
تناسبها Find ، RFind ، GetData ، Header ، Search ، PositionSort ،
سمباد المنصب ، المسافة ، Sptype ، IDList ،
مترابط XCorr ،
تيلوريك صيح،
سرعة HelioCorrect ، BaryCorrect ، IrafInput ،
مرصد . ,
قطعة SPlot ، كرر ،
الملف الشخصي حدد ، تناسب ، استخراج ،
مونتاج SolveGrid ، فسيفساء ، حقل فرعي ، حقل ،

SLiPy / البيانات وظائف / فئات
إلودي أرشفة ، نص ، تنزيل ،
الذري أيون ، IonManager ،

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

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

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

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

جيفري لينتنر ، بكالوريوس العلوم.
مساعد باحث للخريجين
قسم الفيزياء وعلم الفلك
جامعة لويزفيل

لقد قدم مستشار أطروحي مساهمات فكرية كبيرة ، وتحديداً فيما يتعلق بالعلم وراء الكثير من هذه الحزمة.

جيمس لوروش ، دكتوراه.
استاذ مساعد
قسم الفيزياء وعلم الفلك
جامعة لويزفيل

إذا كنت قد استخدمت SLiPy في مشروعك / بحثك ، فيمكنك الاعتراف باستخدامك بالطرق التالية:

المنشورات
استفاد هذا البحث من SLiPy ، مكتبة التحليل الطيفي والفيزياء الفلكية مفتوحة المصدر لـ Python 3 (G. Lentner ، 2015).

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

يتم إنشاء الشارة أعلاه باستخدام المقتطف التالي

كائنات لتمثيل البيانات الفلكية. حاليًا ، يتضمن هذا نطاق الطبقة والوظيفة المساعدة موجه الموجة.

موجه الموجة ( rpix, rval, دلتا, npix ):

بناء مصفوفة عددية من قيم الطول الموجي حيث rpix هو مؤشر البكسل المرجعي ، rval هو الطول الموجي عند البكسل المرجعي ، دلتا هي قرارات (دلتا لامدا) ، و npix هو طول الصفيف المطلوب.

صف دراسي نطاق ( *أرجس, **kwargs ):

كائن الطيف هو فئة حاوية لصفيف البيانات ومجموعة الطول الموجي المقابلة لها.

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

خيارات الافتراضات الأوصاف
موجي حقيقي تناسب متجه الطول الموجي للبيانات
crpix1 "crpix1" إشارة رأس بكسل الكلمة الأساسية
crval1 "crval1" القيمة عند البكسل المرجعي
cdelt1 "cdelt1" القرار (دلتا لامدا)
xunits أنجستروم وحدات لصفيف الطول الموجي
يونات '' وحدات لمجموعة البيانات

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

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

يتم تعريف عمليات الجمع والطرح والضرب والقسمة (بما في ذلك العمليات الموضعية ، على سبيل المثال ، '+ =') لكل من الطيف في عمليات الطيف وكذلك العمليات العددية. عندما يتم تشغيل طيفين ، فإن طيف LHS له الأسبقية. يجب احتواء أحد الأطياف داخل الآخر (أي أن مجال الطول الموجي الخاص بهم إما مساوٍ أو داخلي تمامًا للآخر). يتم إعادة تشكيل الطيف الخارجي على مساحة بكسل للطيف الداخلي ويتم تطبيق العملية على أساس العنصر. لتوضيح ذلك بإيجاز ، يتم تشغيل المنطقة المتأثرة فقط من طيف LHS. هذا يجعل الوحدات خطرة على الضرب والقسمة. فقط في حالة ضرب / تقسيم أطياف مصفوفات الطول الموجي المتساوية ، سيتم تطبيق الوحدات بشكل صحيح. خلاف ذلك ، سيتم تجاهل وحدات RHS. بالنظر إلى السياق المادي الذي يكون من المنطقي ضمنه تطبيق هذه العمليات على الأطياف ، فهذا مبرر ، سيكون للبيانات وحدات بلا أبعاد في جميع الاحتمالات. بالنسبة إلى الجمع والطرح القياسيين ، إذا لم يتم إعطاء أي وحدات ، فمن المفترض أن تكون الوحدات مماثلة لتلك الخاصة بالبيانات.

يتم تعريف عمليات المقارنة (& gt، & lt، & gt =، & lt =، ==،! =، & amp، ^، |) لإرجاع طيف ثنائي بلا أبعاد 1 و 0. نفس الاتفاقية تنطبق على النحو الوارد أعلاه. يجب احتواء LHS أو RHS داخل الآخر ، وتتم مقارنة LHS في المناطق المتداخلة. يتم إرجاع البيانات الموجودة خارج هذه المنطقة المتداخلة على أنها False.

يتم تعريف عمليات التحول ("& gt & gt" و "& lt & lt") على أنها تعني تحولًا في الطيف. الجمع والطرح يعملان على البيانات. تنطبق هذه العمليات على لوح مجموعة مصفوفة. Spectrum & lt & lt 2 * u.Angstrom يقول أن يحول الطيف إلى اللون الأزرق بمقدار 2 Angstroms. إذا كان RHS عبارة عن رقم بدون أبعاد ، فسيتم تضمين وحدات الطول الموجي. أيضًا ، يمكن للمرء تحويل طيف بواسطة طيف آخر (على سبيل المثال ، الطيف A & gt & gt الطيف B) ، حيث لوح سيتم تشغيل المصفوفات على. في هذه الحالات ، يجب أن يكون لديهم نفس عدد البكسل! أخيرًا ، للحصول على تحول متغير عبر الطيف دون إنشاء طيف كامل ببيانات غير مهمة ، يمكنك التحول باستخدام مصفوفة عددية (متساوية الطول أيضًا). إذا لم يتم اكتشاف أي وحدات ، فسيتم تضمين وحدات الطول الموجي.

أيضًا ، يمكنك الوصول إلى بيانات الطيف عبر تدوين "index". ومع ذلك ، فإن السلوك ليس هو نفسه. انظر العرض التفاعلي أدناه.

إذا أعطيت حجة واحدة ، فسيتم اعتبارها أ نطاق الكائن و الذات يتم إعادة تشكيلها على مساحة البكسل للطيف الآخر. خلاف ذلك ، من المتوقع وجود ثلاث وسيطات. يجب أن تحدد الوسيطة الأولى والثانية قيمة الطول الموجي الأدنى والأعلى للمجال ، على التوالي. يجب أن تكون الوسيطة الثالثة هي عدد العناصر (وحدات البكسل) للمجال الجديد. فكر في numpy.linspace (). طيب القلب تم تمريره إلى scipy. interp1d.

بالنظر إلى الطيف الترددي ، آخر، الواردة في مجال الطول الموجي لـ الذات، استبدل جميع وحدات البكسل في المنطقة المتداخلة بتلك الخاصة بالاستيفاء المبني على آخر. طيب القلب يتم تمريره إلى interp1d.

أساسا غلاف ل ديبكوبي (). لقول SpectrumA = SpectrumB يعني أن SpectrumA هو الطيف ب. إذا كنت تريد إنشاء طيف جديد مساو لآخر ، قل SpectrumA = SpectrumB.copy ()

معالجة ملفات FITS. استيراد البيانات إلى نطاق شاء. تصفية النتائج عن طريق الصعود الصحيح والانحدار. انتزاع عناصر الرأس. ابحث عن سمات البيانات مثل المسافة والنوع الطيفي وما إلى ذلك.

تجد (افضل مستوى = './', نمط = '*. تناسب'):

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

RFind (افضل مستوى = './', نمط = '*. تناسب'):

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

احصل على البيانات ( *الملفات, **kwargs):

استيراد البيانات من FITS الملفات. ترجع قائمة نطاق شاء.

رأس ( اسم الملف, كلمة رئيسية = لا شيء ، **kwargs):

يسترد كلمة رئيسية من رأس FITS في الملف اسم الملف. يعتمد نوع الإرجاع على ما يتم إرجاعه. إذا لم يتم توفير كلمة أساسية ، فسيتم إرجاع كائن الرأس بالكامل.

يبحث ( *الملفات, **kwargs):

استخراج أسماء الكائنات من يناسب الملفات واستخدام وحدة Simbad لحل مشكلة ينسب (وسيطة أساسية مطلوبة) من قاعدة البيانات الفلكية SIMBAD. السمات المتاحة حاليًا هي "الموضع" و "المسافة" و "Sptype" و "IDList". إرجاع قائمة النتائج (يعتمد النوع على القيم).

الوظيفة ( المركز, نصف القطر, *الملفات, **kwargs ):

إرجاع قائمة الملفات من الملفات تلك الكذب في نصف القطر (بالدرجات العشرية) من المركز، على أساس را (الصعود الأيمن) و ديسمبر (انحراف).

تسمح هذه الوحدة للمستخدم بالاستعلام عن قاعدة بيانات SIMBAD الفلكية من داخل بايثون أو أوامر / نصوص البرمجة. إنها أربع وظائف رئيسية حالية موضع, مسافة, سبتايب، و IDList إرجاع المتغيرات الحقيقية بأنواع مناسبة جاهزة للاستخدام.

موضع ( المعرف, **kwargs ):

إعادة الصعود الصحيح والانحدار بالدرجات العشرية من المعرف كزوج.

مسافة ( المعرف, **kwargs ):

أعد المسافة في الفرسخ إلى المعرف.

سبتايب ( المعرف, **kwargs ):

قم بإرجاع النوع الطيفي المعرف كما تم حلها بواسطة SIMBAD.

IDList ( المعرف, **kwargs ):

قم بإرجاع قائمة بالمعرفات البديلة لـ المعرف.

وظائف الارتباط للبيانات الفلكية.

XCorr ( الطيف, الطيف ب, **kwargs ):

ترجع الدالة قيمة عددية تمثل أفضل إزاحة داخل a بطئ استنادًا إلى RMS المحسوبة لكل تكوين.

إزالة خطوط الامتصاص الجوي في الأطياف.

صيح ( نطاق, *معايرة, **kwargs ):

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

تنويه يجب أن تكون أطيافك متصلة حتى يعمل هذا!

خيارات الافتراضات الأوصاف
بطئ 25 نطاق البكسل للتحويل
نطاق (0.5, 2.0, 151) numpy.linspace لتركيب السعة

شكل 1: الشكل أعلاه هو مثال على تطبيق Telluric.Correct () خوارزمية إلى طيف. في هذه الحالة ، ستة أطياف من Regulus من أرشيف Elodie كأطياف معايرة.

تصحيحات السرعة الشعاعية لأطياف 1D.

هيليو صحيح ( المرصد, *الأطياف, **kwargs ):

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

باري صحيح ( المرصد, *الأطياف, **kwargs ):

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

IrafInput ( *الملفات, **kwargs ):

بناء ملف إدخال لمهمة rvcorrect IRAF.

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

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

يوجد حاليًا 69 مرصدًا محددًا:

معرف الفئة اسم المرصد
OHP مرصد دي هوت بروفانس ، فرنسا.
KPNO مرصد قمة كيت الوطني
وين مرصد WIYN
CTIO مرصد سيرو تولولو بين أمريكا
لاسيلا المرصد الأوروبي الجنوبي: لا سيلا.
خارق المرصد الأوروبي الجنوبي: بارانال
يلعق مرصد ليك
MMTO مرصد MMT
CFHT تلسكوب كندا - فرنسا - هاواي
لابالما Roque de los Muchachos، La Palma.
MSO جبل. مرصد ستروملو
SSO مرصد سايدنج سبرينج
AAO المرصد الأنجلو أسترالي
ماكدونالد مرصد ماكدونالد
LCO مرصد لاس كامباناس
MTBIGELOW مرصد كاتالينا: تلسكوب 61 بوصة
DAO مرصد دومينيون للفيزياء الفلكية
SPM المرصد الفلكي الوطني ، سان بيدرو مارتير.
تونا المرصد الفلكي ناسيونال ، تونانتزينتلا.
بالومار تلسكوب هيل
MDM مرصد ميتشيغان-دارتموث-إم آي تي
نوفمبر المرصد الوطني لفنزويلا
BMO مرصد بلاك موشانون
BAO مرصد بكين شينغ لونغ
ركلة مرصد دبليو إم كيك
عكار جبل. عكار 182 سم. تلسكوب
APO مرصد اباتشي بوينت
لوويل مرصد لويل
VBO مرصد Vainu Bappu
IAO المرصد الفلكي الهندي ، هانلي
FLWO مرصد ويبل
FLWO1 مرصد ويبل
ORO مرصد أوك ريدج
LNA لابوراتوريو ناسيونال دي أستروفيسيكا - البرازيل
ساو المرصد الفلكي الجنوب أفريقي
كاسلو Complejo Astronomico El Leoncito ، سان خوان.
بوسك Estacion Astrofisica Bosque Alegre ، قرطبة.
روزين المرصد الفلكي الوطني روزين - بلغاريا.
IRTF مرفق تلسكوب الأشعة تحت الحمراء التابع لناسا
BGSUO مرصد جامعة بولينج جرين ستيت.
DSAZ Deutsch-Spanisches Observatorium كالار ألتو - إسبانيا.
كاليفورنيا مرصد كالار ألتو
هولي قائمة المرصد هوهير (جامعة بون) - ألمانيا.
LMO مرصد ليندر ماكورميك
FMO مرصد جبل فان
أبيض مرصد ويتين ، كلية ويلسلي
OSN أوبزيرفاتوريو دي سييرا نيفادا
الجوزاء الشمالي مرصد الجوزاء الشمالي
الجوزاء الجنوبية مرصد الجوزاء الجنوبي
لاسيلا المرصد الأوروبي الجنوبي: لا سيلا.
خارق المرصد الأوروبي الجنوبي: بارانال.
إسونت المرصد الأوروبي الجنوبي ، NTT ، لا سيلا.
ESO36 م المرصد الأوروبي الجنوبي ، تلسكوب 3.6 م ، لا سيلا.
ESOVLT المرصد الأوروبي الجنوبي ، VLT ، بارانال.
SLN SLN - مرصد كاتانيا للفيزياء الفلكية.
EUO مرصد جامعة إيجه
TNO المرصد الوطني التركي
القاطرة مرصد توبيتاك الوطني ، تركيا.
MGO مرصد جبل جراهام
برج الحمل معهد أرياباتا لبحوث علوم المراقبة.
OALP المرصد الفلكي دي لا بلاتا
OLIN كلية كونيتيكت - مرصد أولين
بويدن مرصد بويدن
لولين مرصد لولين
حلق تلسكوب أبحاث الفيزياء الفلكية الجنوبية.
خباز مرصد بيكر
HET مرصد ماكدونالد - تلسكوب هوبي إيبرلي.
JCDO مرصد جاك سي ديفيس ، كلية غرب نيفادا
LNO مرصد لانكاوي الوطني

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

صف دراسي سبلوت ( نطاق, **kwargs ):

مؤامرة الطيف - إنشاء شخصية نطاق.

خيارات الافتراضات الأوصاف
علامة 'ب-' علامة للبيانات
ضع الكلمة المناسبة 'نطاق' اسم الشيء
يوسيتكس خطأ شنيع تقديم مع pdflatex

تستدعي وظائف الأعضاء التالية matplotlib.pyplot ما يعادل: ** xlim **، ** ylim **، ** xlabel **، ** ylabel **، ** title **، ** legend **، ** text * * ، ** الشبكة ** ، ** إغلاق ** ، ** tight_layout **.

هنا ، عندما يتم استدعاء هذه الوظيفة ، يتم تمرير الوسائط إلى matplotlib ومع ذلك ، يتم تذكر هذه الاستدعاءات. لذلك عندما تذهب إلى رسم الرقم مرة أخرى ، لقد عدت من حيث توقفت.

إعادة بناء وتقديم الشكل.

أعد عرض (تحديث) الشكل ، بدون مسح المحور.

امسح جميع المكالمات إلى نص() من الشكل.

التبديل إما تشغيل أو إيقاف (القيمة = صحيح | خطأ) الإزاحة الأفقية.

التبديل إما تشغيل أو إيقاف (القيمة = صحيح | خطأ) الإزاحة الرأسية.

معطى واحد أو أكثر البقع, تراكب الأرقام.

أعد تعيين قيم العلامة في الشكل. يجب أن يساوي عدد الوسائط عدد الأطياف في الشكل.

استعادة الشكل إلى الطيف الأصلي فقط.

احفظ الرقم في ملف يسمى اسم الملف. تنسيق الملف مشتق من امتداد اسم الملف.

أعاد( *البقع, **kwargs ):

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

خيارات الافتراضات الأوصاف
احتفظ 'اسم' البديل هو "مؤامرة"

مهام تركيب الملف الشخصي للأطياف.

يختار ( لطخة ):

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

أثناء قيام المستخدم بالاختيارات ، تظهر علامات مؤقتة على الشكل تشير إلى نقطة البيانات التي تم تحديدها للتو. إذا لم تظهر علامة ، فحاول تحريك المؤشر قليلاً وحاول مرة أخرى. حتى إذا كان الخط يمر عبر هذه النقطة ، فقد لا تكون هناك بالفعل بيانات هناك.

احتواء تلقائي ( لطخة, وظيفة = InvertedLorentzian ، بارامز = لا شيء)

نظرا ل لطخة من النوع Plot.SPlot ، يختار المستخدم أربع نقاط على الطيف وتكون الوظيفة ذات المعلمات مناسبة (Lorentzian معكوس افتراضيًا). اختياريا ، لطخة يمكن أن يكون من نوع الطيف وسيتم إنشاء SPlot أساسي لك. إذا أعطى المستخدم بديلا وظيفة, بارامز (المعلمات) يجب توفيرها. بارامز هو أن تكون أول تخمين ، ص 0 تعطى ل scipy. curve_fit يمكن للمستخدم أن يوفرها بشكل مناسب ، أو في شكل وظائف مع القوالب f (x ، y) حيث x و ذ هي لوح و البيانات المصفوفات (على التوالي) المستخرجة بين النقطتين الداخليتين المحددة من قبل المستخدم.

اللورينتيان المقلوب تم تعريفه في SLiPy.Algorithms.Functions. لا يحتاج المستخدم إلى تقديم بارامز للسلوك الافتراضي.

الشكل 2: تم إنشاء الرقم أعلاه عن طريق تشغيل مقتطف الشفرة أعلاه.

استخراج ( لطخة, نواة = غاوسي ، **kwargs):

حدد المواقع في لطخة الرقم المتوقع أن يكون من النوع SPlot. يجب تحديد أربع نقاط بالضبط. تُستخدم هذه لاستخراج ملف تعريف الخط من الطيف المرسوم في شكل البقعة. يتم استخدام القسم الداخلي للخط ، ويتم استخدام الفواصل الزمنية الخارجية لنمذجة السلسلة المتصلة ، على التوالي ، يتم إرجاع كلاهما ككائنات طيفية. تم قفز الفجوة باستخدام الاستيفاء 1D (scipy. interp1d). من أجل الحصول على تسلسل سلس وتقديرات الخطأ ، تستخدم هذه الوظيفة انحدار نواة غير حدودي (يُعرف أيضًا باسم تجانس النواة) لملاءمة منحنى من خلال البيانات التي تم تمييزها على أنها سلسلة متصلة. كن افتراضيًا ، فإن وظيفة kernel هي Gaussian. يمكن للمستخدم في الواقع استخدام دالة نواة مختلفة يحددها المستخدم ، ولكن يجب أن يتطابق القالب مع نموذج SLiPy.Algorithms.Functions.Gaussian. راجع وحدة SLiPy.Algorithms.KernelFit لفهم كيفية حدوث ذلك بشكل أفضل. ال عرض النطاق هو في الواقع الانحراف المعياري في Gaussian. إنه مقياس طول يحدد مدى تأثير البيانات على مسافة معينة. سيكون عرض النطاق الترددي الافتراضي بالتأكيد كبيرًا جدًا (مما يؤدي إلى نتيجة ثابتة إلى حد كبير عند متوسط ​​نقاط البيانات). نظرًا لانخفاض عرض النطاق الترددي إلى أقل من دقة البيانات ، فسوف تقوم بشكل أساسي بإجراء الاستيفاء الخطي (بدون تجانس). تريد اختيار طول أكبر من اختلاف المقياس الصغير في الضوضاء ، ولكنه أصغر من تباين المقياس الأكبر في مستوى الاستمرارية الكلي.

ال جذر متوسط ​​التربيع يمكن حسابه اختياريًا بين البيانات المتصلة والمنحنى المناسب لها. تُستخدم قيمة rms هذه لقياس ملف تعريف الخطأ الذي يتم إرجاعه للخط المستخرج. بشكل واضح ، الخطأ لاستخراج السطر هو error_spectrum = Continum_rms * I_0 / I حيث أنا هي بيانات الخط و أنا_0 هو الاستمرارية محرف على الفجوة.


أساسيات معايرة الشدة

معايرة الشدة هي حتى أكثر صعوبة . البيانات المسجلة بواسطة مقياس الطيف ليست أبدًا هي الطيف الحقيقي ، بل يتم تعديلها بواسطة كل عنصر بصري على طول مسار الضوء ، بما في ذلك العدسات والمرايا ومحزوز الحيود والكاشف. كل عنصر من هذه العناصر له الاستجابة الطيفية الخاصة . يوضح الشكل 3 استجابات محزوز حيود ثلاثية الأبعاد نموذجي (منحنى أخضر) وكاميرا CCD رقيقة الظهر (منحنى أسود). سيشمل الطيف المسجل بهذه المكونات القطع الأثرية . يعرف الباحثون أنه يجب تطبيع الأطياف لإزالة المساهمة الآلية ، ولكن نظرًا لأن هذه العملية مملة وصعبة ، نادرًا ما يتم إجراؤها. حدد شوكيت التقنية في التحليل الطيفي التطبيقي (2007 ، 61: 117).

عادي أدوات شدة الآلات تظهر في الشكل 4. هذه الأطياف تظهر تلألؤ ضوئي من أكسيد الزنك المسجل على مقياس طيف عالي الدقة. المنحنى الأحمر هو الطيف الحقيقي الذي تظهره المنحنيات الزرقاء والخضراء قمم زائفة الناشئة عن التغييرات غير المستمرة في كفاءة الانعراج المحزوز حيث يتم تدوير المحزوز حول محوره (على سبيل المثال ، حيث يتم مسح الطول الموجي عبر المستوى البؤري).

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

الشكل 3. الاستجابات الطيفية لمحزوز حيود ثلاثية الأبعاد نموذجي (منحنى أخضر) وكاميرا CCD رقيقة الظهر (منحنى أسود). تعمل استجابة كل عنصر بصري على طول مسار الضوء في إعداد تجريبي معين على تعديل الطيف المسجل. الشكل 4. التلألؤ الضوئي من أكسيد الزنك المسجل على مقياس طيف عالي الدقة. الطيف الحقيقي (المنحنى الأحمر) مقابل القمم الزائفة الناشئة عن التغيرات غير المستمرة في كفاءة الانعراج المحزوز حيث يتم مسح الطول الموجي عبر المستوى البؤري (المنحنيات الزرقاء والخضراء). الشكل 5. طيف الجسم الأسود النظري (منحنى أسود) مقابل البيانات المقاسة (المنحنيات الملونة) للمصباح المتوهج

يوضح الشكل 6 أطياف رامان لحمض دهني ، وهو مكون شائع للأقراص الصيدلانية. يمثل الطيف المقدم باللون الأحمر مسودة بيانات ، بينما كان الطيف الذي تم عرضه باللون البرتقالي تصحيح . يبلغ الطول الموجي للإثارة 785 نانومتر ، وتكون قمم التمدد C-H عند 2900 سم -1 عند 1015 نانومتر ، حيث تتناقص كفاءة الكم للكاشف بسرعة إلى الصفر. معايرة الشدة يعيد نسبة الذروة المناسبة إلى الارتفاع في حين تسطيح خط الأساس ، مما يجعل من الأسهل بكثير تحديد نسبة حمض دهني في الخليط.

الشكل 6. أطياف رامان لحمض دهني: البيانات الخام (أحمر) مقابل البيانات المصححة (برتقالي).

6 الاستنتاجات

لقد قمنا بتنفيذ خوارزمية تكرارية بسيطة لتحديد خطوط ThAr لاستخدامها في معايرة أجهزة طيف الصدى. تجمع الخوارزمية بين خصائص الخط المتوقعة (مثل درجة المزج) ، بناءً على قائمة سطر الإدخال ، مع خصائص طيف ThAr التي تمت ملاحظتها على مخطط الطيف ذي الأهمية (مثل الدقة ، وشدة الخط النسبي ، وما إلى ذلك). We emphasize that although this paper has focused on the application of this algorithm to VLT/UVES spectra, the algorithm can be applied to any other spectrograph all that is required is a ThAr spectrum taken on that spectrograph and a reduction code which allows repeatable wavelength calibration with different ThAr line-lists.

Using the most recent and reliable ThAr laboratory wavelengths, including that of LP07, we have produced a new ThAr line-list which, we argue, should be used to calibrate UVES spectra in preference to the list distributed by ESO. The main advantages of the former over the latter are: (i) more homogeneous input line catalogues with mutually consistent wavelength scales (ii) more accurate and precise laboratory wavelengths (iii) only unblended lines appear in the final list and (iv) only lines which are observed to be useful in UVES spectra are included. Indeed, the wavelength calibration residuals achieved using the new UVES line-list (rms ∼ 35 m s −1 ) are more than a factor of 3 better than those achieved with the ESO or DCH98 list (rms ∼ 130 m s −1 ) – see Fig. 8. An assumption one makes in using our new line-list to calibrate UVES spectra is that the relative line intensities (i.e. lamp conditions like pressure, current, etc.) are similar to those in the sample UVES ThAr spectra used in our selection algorithm. However, ideally, the selection algorithm should be included in the wavelength calibration procedure itself, thus producing the best selection of ThAr lines for each individual ThAr exposure being reduced.

The new line-list has been used to probe distortions of the wavelength scale introduced into UVES spectra which were originally wavelength calibrated with the ESO line-list. The distortions include sharp, short-range corrugations with peak-to-peak amplitude up to ∼75 m s −1 and longer range variations between +30 m s −1 and −30 m s −1 ( Fig. 9). These distortions have serious implications in the context of current UVES estimates of possible variations in the fine-structure constant, especially those of Chand et al. (2004)– see Figs 10 and 11. For example, if one employs the common Mg/Fe ii combination of transitions to derive Δα/α then the errors in the ESO line-list cause a spurious value of (Δα/α)ThAr≈+0.4 × 10 −5 for absorption redshifts 1.22 ≲ضabs≲ 1.35 and (Δα/α)ThAr≈−0.3 × 10 −5 for 1.38 ≲ضabs≲ 1.75. Although Chand et al. (2004) claim an overall precision in Δα/α of 0.06 × 10 −5 from 23 Mg/Fe ii absorbers (but see Murphy et al. 2007b, c), a single absorber at ضabs= 1.2433 strongly dominates their sample with an individual error on Δα/α of 0.1 × 10 −5 . However, at this redshift, and considering which transitions are used to derive Δα/α in this system, we find that a spurious systematic shift of (Δα/α)ThAr≈+0.4 × 10 −5 has affected this system. Once such wavelength calibration corrections are applied to the entire sample, the null result of Δα/α= (−0.06 ± 0.06) × 10 −5 claimed by Chand et al. (2004) becomes Δα/α= (−0.17 ± 0.06) × 10 −5 – a 2.5σ‘detection’. The new ThAr line-list we present here should aid in avoiding such important yet elementary errors in future analyses of UVES spectra.

Resolving power ص≡λ/FWHM, where FWHM is the instrumental profile's full width at half-maximum.


The included script fits_to_csv.py can be used as a command line tool to extract spectral data from fits files to csv, similar to the "Save Spectral Data as Text File" function in the original software.

I recommend taking exposures using SBIG's CCDops software, using the procedure given in the spectrograph manual. This software will only accept images with dimensions 121x648 pixels, which in CCDops means setting resolution to 1xN and vertical binning to 4.

Usage: fits_to_csv mercury_line_pixel [path] [nm]

The csv files are created in the same directory as the images, with the same names. The x-value at which the 5461 A mercury line appears in the image must be provided. If a path to a directory is specified, extracts data from all FITS files in that directory. If a filename is specified instead, extracts data from that file only. Omitting a path extracts data from all files in the current working directory. If the argument "nm" is provided, outputs wavelength in nm instead of A.

The pixel value at which the 5461 A mercury line appears in the image depends on the calibration process. Consult the spectrograph manual for how to identify this line.

أمثلة:
fits_to_csv 337 image.FIT Extracts data from image.FIT and creates image.csv in the same directory.
fits_to_csv 337 Astronomyimages Extracts data from all fits files in Astronomyimages , creating separate csv files for each in that directory.
fits_to_csv 337 "C:DocumentsAstronomySpectrograph imagesimage.fit" nm Extracts data from image.fit , with the wavelength in nanometers.
fits_to_csv 337 nm Extracts data from all fits files in the current working directory, with the wavelength in nanometers.

For more advanced use cases, such as getting binned data, cropping to a specific part of the image (the defualt crop is like the original software's, pixel 55 to 65) or getting the data in a different format, the python package can be used to build other tools. I'm working on better documentation, for now the comments in the code will have to suffice.


Contributions from the community are strongly encouraged. Dive into any of the sections and start creating and contributing.If you wish to add the feed of your blog to our list of aggregated blogs fill in the contribution form below!

Subscribe : ATOM or RSS

New to Python? Give it a try !

Contributing Feeds

To suggest a new feed to our aggregator, fill in the Contact Form on the right !


Less than 4GB RAM

That's tricky because you won't have much free RAM after you deduct the size of all the CCDData objects and what you OS and the other processes need. In that case it would be best to process for example 5 bias images at a time and then combine the results of the first combinations. That's probably going to work because you use average as method (it wouldn't work if you used median ) because (A+B+C+D) / 4 is equal to ((A+B)/2 + (C+D)/2)/2 .

That would be (I haven't actually checked this code, so please inspect it carefully before you run it):


شاهد الفيديو: 22 - Uvod u programski jezik Python: Naslijedjivanje klasa - podklase (أغسطس 2022).