آي راف

**آي راف (مرفق تحليل وتقليل الصور)** هو حزمة برمجية طُورت في االمرصد الوطني لعلم الفلك البصري (NOAO)، وتهدف إلى معالجة وتقليل الصور الفلكية والأطياف التي تكون على شكل مصفوفات بكسل. تعتمد هذه البيانات بشكل أساسي على أجهزة الكشف عن الصور مثل **أ<nowiki/>[[جهاز اقتران الشحنة|أجهزة اقتران الشحنات (CCD)]] (CCD)**. يتوفر IRAF لجميع أنظمة التشغيل الرئيسية للحواسيب المركزية وأجهزة الكمبيوتر المكتبية، وقد صُمم ليكون متعدد المنصات، ويدعم أنظمة التشغيل **VMS** وأنظمة التشغيل الشبيهة بـ**يونكس (UNIX)**. في السابق، كان استخدامه ممكنًا على نظام **مايكروسوفت ويندوز** بفضل '''Cygwin'''، ويمكن القيام بذلك اليوم باستخدام **نظام ويندوز الفرعي لينكس (Windows Subsystem for Linux)**. حاليًا، يُستخدم بشكل أساسي على نظامي **[[ماك أو إس]] (macOS)** و**[[لينكس]] (Linux)**.

تُنظم أوامر **IRAF**، التي تُعرف بـ**المهام (Tasks)**، في هياكل تُسمى **الحزم (Packages)**. يمكن إضافة حزم إضافية إلى آي راف، وقد تحتوي هذه الحزم بدورها على حزم أخرى. تتوفر العديد من الحزم من قبل **المرصد الوطني لعلم الفلك البصري (NOAO)** والمطورين الخارجيين، والذين يركزون غالبًا على فرع معين من البحث أو منشأة فلكية محددة.

تتضمن الوظائف المتاحة في آي راف معايرة التدفقات ومواقع الأجسام الفلكية داخل الصورة، والتعويض عن الاختلافات في الحساسية بين وحدات بكسل الكاشف، أو الجمع بين صور متعددة أو قياس الانزياحات الحمراء لخطوط الامتصاص أو الانبعاث في الطيف .

على الرغم من أن آي راف لا يزال يحظى بشعبية كبيرة بين علماء الفلك، فقد تم إيقاف التطوير المؤسسي والصيانة. يتم صيانة آي راف كبرنامج مجتمعي.  

## تاريخ
بدأ مشروع **IRAF** في خريف عام 1981 في مرصد كيت بيك الوطني. في عام 1982، تم الانتهاء من التصميم الأولي والإصدار الأول من لغة الأوامر (CL). تأسست بعدها مجموعة IRAF، وكان **دوغ تودي** هو مصمم النظام والمبرمج الرئيسي. في عام 1983، اختار معهد علوم تلسكوب الفضاء IRAF كبيئة لنظام تحليل البيانات الخاص به، SDAS، وقام بنقل النظام إلى VMS. صدر أول إصدار داخلي لـ IRAF في عام 1984، وبعد توزيع محدود على عدد قليل من المواقع الخارجية، كان الإصدار العام الأول في عام 1987. 

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

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

من عام 2006 إلى عام 2009، بُذلت محاولة أولى لنقل آي راف إلى بنية **64 بت** في  **باليابان**. ورغم أن هذا الجهد لم يتطور إلى إصدار رسمي جديد لـ آي راف ، فقد ساهم بأجزاء كبيرة في عملية النقل إلى 64 بت التي قام بها **NOAO**.

استأنفت **المرصد الوطني لعلم الفلك البصري (NOAO)** جهود التطوير في عام 2007، حيث قامت بنقل النظام إلى بنية **64 بت** وأضافت إليه قدرات **المرصد الافتراضي**. انتهت هذه المرحلة في عام 2013 مع إصدار الإصدار 2.16.1.

في عام 2017، تم نقل الكود المصدري لـ **IRAF** إلى منصة '''GitHub'''. وفي محاولة لتعبئة برنامج آي راف لنظام ديبان '''Debian'''، تم تنظيفه من أي كود مصدري غير حر متبقٍ، ومنذ ذلك الحين، تتم صيانته بواسطة المجتمع فقط. بعد عدة إصدارات أولية، صدر الإصدار 2.17 في أوائل عام 2022. 

في عام 2023، استأنفت NOIRLab(الخلف لمؤسسة NOAO) بعض أعمال التطوير، وأصدرت نسختها الخاصة 2.18، مع نطاق محدود لدعم خط أنابيب تقليل بيانات Gemini القديم. تم دمج التغييرات ذات الصلة لاحقًا في إصدار المجتمع 2.18. 

## الترخيص
يتم ترخيص آي راف عمومًا وفقًا لنظام ترخيص **MIT**. تحتوي الإصدارات الأقدم على بعض البرامج غير المجانية. على وجه الخصوص، قيّد كود الرسومات التابع للمركز الوطني لأبحاث الغلاف الجوي إعادة توزيع IRAF قبل إزالته في الإصدار 2.16. بالإضافة إلى ذلك، استخدمت الإصدارات القديمة الكود المأخوذ من كتاب Numerical Recipes بموجب ترخيص مختلف. تم إزالة هذا الكود أو استبداله بمصدر مفتوح في الإصدارات بعد 2.16.1. سمح هذا بتوزيع حزم آي راف في توزيعات **لينكس** السائدة مثل **ديبان** أو **Ubuntu**.

## تصميم النظام
يتكون نظام آي راف وقت التشغيل من أربعة مكونات أساسية: 

* تُعد حزم التطبيقات مجموعة منظمة من المهام المحمولة لتقليل البيانات العلمية وتحليلها، ولكن أيضًا لأدوات النظام.
* لغة الأوامر ( **CL** ) هي واجهة المستخدم التفاعلية الافتراضية ويتم استخدامها أيضًا كلغة برمجة نصية للمهام في حزم التطبيقات.
* يوفر نظام التشغيل الافتراضي ( **VOS** ) واجهة محمولة لمهام التطبيق. تم تصميمه على غرار وظائف نظام Unix، ولكن مع واجهة برمجة التطبيقات للغة Subset Preprocessor ( **SPP** ) الخاصة بـ آي راف.
* واجهة نظام المضيف ( **HSI** ) هي النواة التي توفر واجهة بين نظام المضيف ووظائف نظام VOS. كما أنه يوفر الأدوات اللازمة لبدء تشغيل النظام من المصدر. يعد مُجمِّع SPP أيضًا جزءًا من HSI.

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

## حزم التطبيقات
تُهيكل حزم التطبيقات بشكل متكرر في **حزم فرعية** و**مهام**. يمكن تقسيمها إلى فئتين: **النظام العام وأدوات معالجة البيانات الأساسية**، و**الحزم الخاصة بتقليص البيانات الفلكية وتحليلها**. تُكتب المهام بشكل أساسي في لغتي اس بي بي(spp) و**سي ال cl**.

### حزم النظام
توجد حزم النظام في الحزمة الأساسية لـ **آي راف** وتوفر أدوات لـ **سي ال (cl)**، وأدوات مساعدة مفيدة لنظام التشغيل، وأدوات مساعدة علمية أساسية، في ذلك معالجة الصور:

; داتايو
: تحويل تنسيق البيانات (تنسيق الصور FITS ، آي راف، إلخ.)
; الصور
: معالجة الصور النقطية العامة وعرضها
; القوائم
: معالجة القائمة
; حبكة
: أدوات رسم الرسومات المتجهة
; أدوات ناعمة
: أدوات تطوير البرمجيات وصيانة النظام
; نظام
: أدوات النظام
; المرافق
: أدوات مساعدة متنوعة، بما في ذلك **nttools** للتعامل مع الجداول.

### حزم علم الفلك البصري
تُستخدم حزم **NOAO** لتحليل بيانات علم الفلك البصري. معظم هذه المهام عامة، ولكن حزمة `imred` تحتوي أيضًا على مهام لتقليل البيانات لأدوات محددة. بعض الحزم المهمة هي :

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

تصغير| مخطط IRAF من حزمة onedspec أثناء العمل.

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

### الحزم الخارجية
كانت إحدى نقاط القوة في **آي راف** هي وجود العديد من الحزم الخارجية التي تعمل على حل مشكلات محددة أو تنفيذ خطوط أنابيب متخصصة لتقليل البيانات. ومن بين هذه الحزم نذكر على سبيل المثال:

; فيتسوتيل
: أدوات مساعدة لملفات FITS ذات الامتداد المفرد والمتعدد
; طاولة قابلة للطي
: حزمة آي راف( IRAF) للأطياف الجدولية
; ctio
: أدوات مرصد سيررو تولولو للبلدان الأمريكية
; ستداس
: نظام برمجي من معهد علوم تلسكوب الفضاء لمعايرة وتحليل البيانات من تلسكوب هابل الفضائي . يستمر دعم المهام المحددة من حزمة **stsdas** في حزمة **st4gem** . تم الآن تضمين حزمة **الجداول** الأصلية من STSci كـ **utilities.nttables** في حزم النظام.
; ستيكف
: مهام آي راف التي تم تطويرها في منشأة التنسيق الأوروبية للتلسكوب الفضائي
; رفساو
: حزمة السرعة الشعاعية من مرصد سميثسونيان للفيزياء الفلكية
; كراسي المراحيض
: أدوات نظام إحداثيات صورة العالم من تأليف جيسيكا مينك
; استخراج الطيف AXe
; برنامج استخراج وتصور الطيف (aXe) هو أداة لمعالجة الصور الطيفية الفلكية كبيرة الحجم بدون شقوق، مثل تلك التي يتم الحصول عليها باستخدام '''الكاميرا المتقدمة للمسح''' **على (ACS) [[مقراب هابل الفضائي|تلسكوب هابل الفضائي]]** . تتكون الحزمة من عدة مهام، كل منها تؤدي خطوة اختزال محددة على البيانات لإنتاج الأطياف المستخرجة النهائية. يمكن للمستخدم بعد ذلك تحليل الأطياف والتحكم فيها، وإذا لزم الأمر، إعادة تشغيلها بمعلمات متغيرة قليلاً حتى يتم التوصل إلى نتيجة مرضية. يمكن أن تحتوي صورة  العميقة لـ **ACS WFC** على أطياف قابلة للكشف لآلاف الأجسام. إن التحقق من كل طيف على حدة أمر مرهق للغاية. للمساعدة في تحليل كامل ثروة بيانات المستخدمين، تم تطوير المهمة الإضافية **aXe2web** لإنتاج صفحات ويب قابلة للتصفح من بيانات طيفية مخفضة. هذا يمكّن فحص مئات الأطياف بسرعة وتمييزها. يمكن استخدام الأداة لإلقاء نظرة سريعة أو كمرافق معاينة في خطوط أنابيب البيانات أو قواعد البيانات أو حتى للمراصد الافتراضية.
;
; جيميني خط أنابيب تقليل البيانات لمرصد جيميني

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

### المهام المحددة من قبل المستخدم
يتيح **IRAF** للمستخدمين كتابة مهامهم الخاصة بطريقتين رئيسيتين:

# **عن طريق كتابة نصوص إجراءات غير مجمعة (لغة الأوامر، CL)**: هذه الطريقة تسمح للمستخدمين بكتابة البرامج النصية مباشرةً باستخدام لغة الأوامر الخاصة بـIRAF.
# **من خلال برامج المعالجة المسبقة للمجموعة الفرعية المترجمة (SPP)**: تتيح هذه الطريقة للمستخدمين كتابة برامج مترجمة، مما يوفر أداءً أفضل في بعض الحالات.

تتوفر وثائق تعليمية مفصلة لكلا الطريقتين لمساعدة المستخدمين على البدء وتطوير مهامهم المخصصة.. 

## اللغات الخاصة بـ IRAF

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

يعمل سي ال **CL (Command Language)** في المقام الأول كغلاف وينظم العمل مع النظام والتطبيقات. هناك ثلاثة أنواع من المهام التي يمكن لـ CL تنفيذها:

* **المهام الأصلية (Native Tasks)**: وهي جزء من ملفات IRAF القابلة للتنفيذ والمترجمة.
* **البرامج النصية (Script Tasks)**: وهي مهام مكتوبة بلغة CL نفسها.
* **المهام الأجنبية (Foreign Tasks)**: وهي برامج خارجية أو برامج نصية يتم تنفيذها بواسطة CL.

لكل مهمة، قد يوجد ملف معلمات يضم وصفًا لجميع المعلمات التي تستخدمها المهمة والتي يجب أن تكون معروفة ومُدارة بواسطة CL.

في الإصدارات اللاحقة، تم توسيع CL الأصلي إلى **ECL (Enhanced Command Language)**، الذي يتميز بسطر أوامر قابل للتحرير كميزة رئيسية. وقد تم أيضًا تطوير إصدار يتيح الوصول المباشر إلى المرصد الافتراضي (VOCL).

. 

فيما يلي نص Hello World بسيط في CL:
```gooddata-cl
{
print(' Hello, world !! ')
}
```
عادةً ما تحتوي نصوص CL على اللاحقة `.cl`، مما قد يؤدي إلى تعارضات مع ملفات كود '''Common Lisp''' التي تستخدم نفس اللاحقة..

### لغة المعالجة المسبقة الفرعية

تُنفذ **لغة المعالجة المسبقة الفرعية (SPP)** مجموعة فرعية من لغة المعالجة المسبقة لـ **آي راف** التي خُطط لها في الأيام الأولى لـ آي راف. تعتمد لغة SPP على لغة **[[راتفور]]**. الشكل المعجمي، والمشغلات، وبنى تدفق التحكم متطابقة مع تلك التي يوفرها **[[راتفور]]**.

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

يقوم برنامج **xc**، المُقدم مع **IRAF**، بترجمة برامج **SPP** إلى لغة '''Fortran 66''' ، ومن ثم باستخدام مترجم **f2c** يتم تحويلها إلى كود **C**.

يُستكمل المعالج المسبق باستخدام **mkpkg**، وهي أداة لأتمتة البناء شبيهة بـ<code>make</code>، بالإضافة إلى **generic**، وهي أداة لترجمة الأنواع العامة إلى كود مصدر يعتمد على النوع، و**xyacc**، وهو نسخة معدلة من `yacc` لإنتاج مخرجات SPP.

فيما يلي برنامج Hello World البسيط في SPP:
```gooddata-cl
task    hello                   # CL callable task
procedure hello()               # common procedure
begin
        call printf ("hello, world\n")
end
```
عادةً ما تحتوي برامج **SPP** على اللاحقة `.x`، بينما تلك التي تتطلب معالجة مسبقة باستخدام الأداة العامة تحتوي على اللاحقة `.gx`.

## البرامج التكميلية
تتطلب بيئة العمل الكاملة لـ **IRAF** عادةً تطبيقين آخرين:

# **نافذة xterm ممتدة** مع نافذة رسومية، تُسمى **xgterm** وتُوزع ضمن حزمة **x11iraf** منفصلة.
# برنامج عرض الصور يُشار إليه باسم "**خادم الصور**". أشهر خوادم الصور هما:
#* **SAOImageDS9** (من SAO)
#* **ximtool** (من NOAO، ويُوزع أيضًا في حزمة x11iraf).

تُستخدم هذه الأدوات معًا لتوفير بيئة عمل رسومية وتفاعلية لعلماء الفلك عند استخدام IRAF.. 

كبديل لـ **xgterm** ولغة الأوامر، يمكن استخدام حزمة '''Python''' **PyRAF**. يتميز PyRAF بقدرته على ترجمة نصوص CL إلى نصوص Python. كما يوفر نافذة رسومية (تعتمد على Tk أو Matplotlib). وكواجهة أوامر، يمكن استخدام واجهة أوامر Python أو IPython، أو حتى وضع خاص يشبه إلى حد كبير مظهر واجهة أوامر CL الأصلية. 

## انظر أيضا

* قائمة برامج المرصد
* علم الفلك
* IDL / لغة جنوداتال
* ستارلينك

## مراجع

## روابط خارجية

* الصفحة الرئيسية لـ IRAF
* وثائق IRAF
* مستودع الكود المصدر على Github
* صفحة مناقشة مجتمع IRAF
* الصفحة الرئيسية القديمة لـ IRAF على أرشيف الويب

تصنيف:برمجيات متعددة المنصات
تصنيف:برمجيات فلكية
تصنيف:صفحات بترجمات غير مراجعة