क्यूनिफॉर्म (प्रोग्रामिंग लैंग्वेज): Difference between revisions
No edit summary |
No edit summary |
||
Line 26: | Line 26: | ||
}} | }} | ||
क्यूनिफॉर्म बड़े | '''क्यूनिफॉर्म''' बड़े स्तर पर वैज्ञानिक डेटा विश्लेषण के लिए एक अनावृत-स्रोत कार्यप्रवाह भाषा है।<ref>{{Cite web|url=https://github.com/joergen7/cuneiform|title = Joergen7/Cuneiform|website = [[GitHub]]|date = 14 October 2021}}</ref><ref>{{Cite journal | ||
| last1 = Brandt | first1 = Jörgen | | last1 = Brandt | first1 = Jörgen | ||
| last2 = Bux | first2 = Marc N. | | last2 = Bux | first2 = Marc N. | ||
Line 36: | Line 36: | ||
| year = 2015 | | year = 2015 | ||
| url = http://ceur-ws.org/Vol-1330/paper-03.pdf | | url = http://ceur-ws.org/Vol-1330/paper-03.pdf | ||
}}</ref> यह समानांतर | }}</ref> यह समानांतर गणना को बढ़ावा देने वाली एक स्थिर रूप से प्ररूप की गई कार्यात्मक प्रोग्रामिंग भाषा है। इसमें एक बहुमुखी [[विदेशी फ़ंक्शन इंटरफ़ेस|बाह्य फलन अंतराफलक]] है जो उपयोगकर्ताओं को कई बाहरी प्रोग्रामिंग लैंग्वेज से सॉफ़्टवेयर को एकीकृत करने की अनुमति देता है। संगठनात्मक स्तर पर क्यूनिफॉर्म इसे संरचना-पूर्ण बनाने के लिए [[ सशर्त (कंप्यूटर प्रोग्रामिंग) |सनियम]] उपखंड और सामान्य [[ प्रत्यावर्तन | प्रत्यावर्तन]] जैसी सुविधाएं प्रदान करता है।इसमें, क्यूनिफॉर्म एक कार्यात्मकता प्रोग्रामिंग भाषा की व्यापकता की प्रस्तुत करते हुए [[अपाचे टवेर्ना|टवेर्ना(Taverna)]], केएनआईएमई(KNIME), या [[ गैलेक्सी (कम्प्यूटेशनल जीव विज्ञान) |गैलेक्सी(GALAXY)]] जैसे वैज्ञानिक कार्यप्रवाह प्रणाली और आलेख्यपत्ररेडस या [[ सुअर (प्रोग्रामिंग उपकरण) |पिग लैटिन]] जैसे बड़े स्तर पर डेटा विश्लेषण प्रोग्रामिंग प्रतिमान के बीच अंतर को बंद करने का प्रयास है। | ||
क्यूनिफॉर्म को वितरित [[एरलांग (प्रोग्रामिंग भाषा)]] में लागू किया गया है। यदि वितरित | क्यूनिफॉर्म को वितरित [[एरलांग (प्रोग्रामिंग भाषा)]] में लागू किया गया है। यदि वितरित प्रकार में चलाया जाता है तो यह चमक या सेफ (या किसी अन्य फ़ाइल प्रणाली का एक-रूप होना एकीकरण, जैसे HDFS) जैसे POSIX-अनुपालक वितरित फ़ाइल प्रणाली को चलाता है। वैकल्पिक रूप से, क्यूनिफ़ॉर्म स्क्रिप्ट(लिपि) को HTCondor या Hadoop के शीर्ष पर निष्पादित किया जा सकता है।<ref>{{cite web|title=Scalable Multi-Language Data Analysis on Beam: The Cuneiform Experience by Jörgen Brandt|url=http://beta.erlangcentral.org/videos/scalable-multi-language-data-analysis-on-beam-the-cuneiform-experience-by-jorgen-brandt/#.WBLlE2hNzIU|website=Erlang Central|access-date=28 October 2016|archive-url=https://web.archive.org/web/20161002222350/http://beta.erlangcentral.org/videos/scalable-multi-language-data-analysis-on-beam-the-cuneiform-experience-by-jorgen-brandt/#.WBLlE2hNzIU|archive-date=2 October 2016|url-status=dead}}</ref><ref> | ||
{{Cite journal | {{Cite journal | ||
| last1 = Bux | first1 = Marc | | last1 = Bux | first1 = Marc | ||
Line 83: | Line 83: | ||
</ref><ref>{{cite web|title=Scalable Multi-Language Data Analysis on Beam: The Cuneiform Experience|url=http://www.erlang-factory.com/euc2016/jorgen-brandt|website=Erlang-factory.com|access-date=28 October 2016}}</ref> | </ref><ref>{{cite web|title=Scalable Multi-Language Data Analysis on Beam: The Cuneiform Experience|url=http://www.erlang-factory.com/euc2016/jorgen-brandt|website=Erlang-factory.com|access-date=28 October 2016}}</ref> | ||
क्यूनिफॉर्म पीटर केली के काम से प्रभावित है जो वैज्ञानिक | क्यूनिफॉर्म पीटर केली के काम से प्रभावित है जो वैज्ञानिक कार्यप्रवाह निष्पादन के लिए एक प्रतिमान के रूप में कार्यात्मक प्रोग्रामिंग का प्रस्ताव करता है।<ref>{{cite journal | ||
| last1 = Kelly | first1 = Peter M. | | last1 = Kelly | first1 = Peter M. | ||
| last2 = Coddington | first2 = Paul D. | | last2 = Coddington | first2 = Paul D. | ||
Line 114: | Line 114: | ||
| doi = 10.1016/j.ecoinf.2009.08.008 | s2cid = 16392118 | url = https://escholarship.org/content/qt2q46n1tp/qt2q46n1tp.pdf?t=nivnuu | | doi = 10.1016/j.ecoinf.2009.08.008 | s2cid = 16392118 | url = https://escholarship.org/content/qt2q46n1tp/qt2q46n1tp.pdf?t=nivnuu | ||
}} | }} | ||
</ref>इसमें, क्यूनिफ़ॉर्म [[स्विफ्ट (समानांतर स्क्रिप्टिंग भाषा)| | </ref>इसमें, क्यूनिफ़ॉर्म [[स्विफ्ट (समानांतर स्क्रिप्टिंग भाषा)|तत्पर]] जैसी [[डेटाफ्लो प्रोग्रामिंग|डेटाप्रवाह प्रोग्रामिंग]] पर आधारित संबंधित कार्यप्रवाह लैंग्वेज से अलग है।<ref> | ||
{{cite journal | {{cite journal | ||
| title = Nextflow enables reproducible computational workflows | | title = Nextflow enables reproducible computational workflows | ||
Line 130: | Line 130: | ||
| doi = 10.1038/nbt.3820 | pmid = 28398311 | s2cid = 9690740 }} | | doi = 10.1038/nbt.3820 | pmid = 28398311 | s2cid = 9690740 }} | ||
</ref> | </ref> | ||
==बाहरी सॉफ़्टवेयर एकीकरण== | ==बाहरी सॉफ़्टवेयर एकीकरण== | ||
बाहरी उपकरण और लाइब्रेरी (उदाहरण के लिए, [[आर (प्रोग्रामिंग भाषा)|आर]] या [[पायथन (प्रोग्रामिंग भाषा)|पायथन]] | बाहरी उपकरण और लाइब्रेरी (उदाहरण के लिए, [[आर (प्रोग्रामिंग भाषा)|आर]] या [[पायथन (प्रोग्रामिंग भाषा)|पायथन]] लाइब्रेरी) एक बाह्य फलन अंतराफलक के माध्यम से एकीकृत होते हैं। इसमें यह सदृश है, उदाहरण के लिए, केएनआईएमई जो टुकड़ा ग्रंथि के माध्यम से बाहरी सॉफ़्टवेयर के उपयोग की अनुमति देता है, या [[अपाचे टवेर्ना|टवेर्ना]] जो [[जावा (प्रोग्रामिंग भाषा)|जावा]] सॉफ़्टवेयर को एकीकृत करने के लिए [[बीनशेल]] सेवाएं प्रदान करता है। किसी कार्य को किसी बाह्य भाषा में परिभाषित करके किसी बाहरी उपकरण या लाइब्रेरी के एपीआई(API) का उपयोग करना संभव है। इस तरह, किसी आवरण को लिखने या उपकरण को पुनः लागू करने की आवश्यकता के बिना उपकरण को सीधे एकीकृत किया जा सकता है।<ref>{{cite web|title=एर्लांग में एक कार्यात्मक वर्कफ़्लो भाषा कार्यान्वयन|url=http://www.erlang-factory.com/static/upload/media/1448992381831050cuneiformberlinefl2015.pdf|access-date=28 October 2016}}</ref> | ||
वर्तमान में समर्थित | वर्तमान में समर्थित बाह्य प्रोग्रामिंग भाषाएँ हैं: | ||
{{div col}} | {{div col}} | ||
* [[बैश ( | * [[बैश (Bash)]] | ||
* अमृत ( | * अमृत (Elixir) | ||
* एर्लांग ( | * एर्लांग (Erlang) | ||
* जावा ( | * जावा (JAVA) | ||
* [[जावास्क्रिप्ट]] | * [[जावास्क्रिप्ट]](Javascript) | ||
* [[ | * [[मैटलैब]](MATLAB) | ||
* [[जीएनयू ऑक्टेव]] | * [[जीएनयू ऑक्टेव]](Gnu Octave) | ||
*[[पर्ल]] | *[[पर्ल]](Perl) | ||
* पायथन ( | * पायथन (Python) | ||
* आर ( | * आर (R) | ||
* [[रैकेट ( | * [[रैकेट (Racket)]] | ||
{{div col end}} | {{div col end}} | ||
[[AWK]] और [[gnuplot]] के लिए | [[AWK]](ऑक) और [[gnuplot]](गनप्लेट) के लिए बाह्य भाषा समर्थन नियोजित परिवर्धन है। | ||
== | ==प्रणाली प्ररूप करें== | ||
क्यूनिफ़ॉर्म एक सरल, सांख्यिकीय रूप से जांची गई प्रकार की प्रणाली प्रदान करता है।<ref> | क्यूनिफ़ॉर्म एक सरल, सांख्यिकीय रूप से जांची गई प्रकार की प्रणाली प्रदान करता है।<ref> | ||
Line 165: | Line 162: | ||
| year = 2017 | | year = 2017 | ||
| doi = 10.1017/S0956796817000119 | s2cid = 6128299 }} | | doi = 10.1017/S0956796817000119 | s2cid = 6128299 }} | ||
</ref> जबकि क्यूनिफ़ॉर्म सूचियाँ [[मिश्रित डेटा प्रकार]] | </ref> जबकि क्यूनिफ़ॉर्म सूचियाँ [[मिश्रित डेटा प्रकार|मिश्रित डेटा प्रकारो]] के रूप में प्रदान करता है, यह क्रम त्रुटियों की संभावना से बचने के लिए पारंपरिक सूची पहुंचकर्ता (हेड और टेल) को छोड़ देता है जो खाली सूची तक पहुँचने पर उत्पन्न हो सकती हैं। इसके स्थान पर सूचियों को केवल प्रतिचित्रण या वलन द्वारा सभी या कुछ भी नहीं व्यवहार में प्रवेश किया जाता है। इसके अतिरिक्त, क्यूनिफॉर्म (संगठनात्मक स्तर पर) अंकगणित को छोड़ देता है जो शून्य से विभाजन की संभावना को बाहर कर देता है। किसी भी आंशिक रूप से परिभाषित संचालन की चूक यह आश्वासन देती है कि क्रम त्रुटियां विशेष रूप से बाह्य कोड में उत्पन्न हो सकती हैं। | ||
===आधार डेटा प्रकार=== | ===आधार डेटा प्रकार=== | ||
आधार डेटा प्रकार के रूप में क्यूनिफॉर्म बूलियन्स, स्ट्रिंग्स और फ़ाइलें प्रदान करता है। इसमें, फ़ाइलों का उपयोग | आधार डेटा प्रकार के रूप में क्यूनिफॉर्म बूलियन्स, स्ट्रिंग्स और फ़ाइलें प्रदान करता है। इसमें, फ़ाइलों का उपयोग बाह्य कार्यों के बीच यथेच्छाचार प्रारूप में डेटा का आदान-प्रदान करने के लिए किया जाता है। | ||
=== | ===अभिलेख और प्रतिरूप मिलान=== | ||
क्यूनिफॉर्म यौगिक डेटा प्रकारों के रूप में | क्यूनिफॉर्म यौगिक डेटा प्रकारों के रूप में अभिलेख(संरचनाएं) प्रदान करता है। नीचे दिया गया उदाहरण एक वेरिएबल(परिवर्तनीय) <code>r</code> की परिभाषा दिखाता है जो दो क्षेत्रों a1 और a2 के साथ एक अभिलेख है, पहला एक स्ट्रिंग है और दूसरा एक बूलियन है। | ||
<syntaxhighlight lang="swift"> | <syntaxhighlight lang="swift"> | ||
Line 179: | Line 176: | ||
<a1 = "my string", a2 = true>; | <a1 = "my string", a2 = true>; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
अभिलेख् को प्रक्षेपण के माध्यम से या [[पैटर्न मिलान|प्रतिरूप मिलान]] के माध्यम से अभिगम किया जा सकता है। नीचे दिया गया उदाहरण अभिलेख r से दो क्षेत्रों a1 और a2 निकालता है। | |||
<syntaxhighlight lang="swift"> | <syntaxhighlight lang="swift"> | ||
Line 186: | Line 183: | ||
let <a2 = a2 : Bool> = r; | let <a2 = a2 : Bool> = r; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
===सूचियाँ और सूची प्रसंस्करण=== | ===सूचियाँ और सूची प्रसंस्करण=== | ||
इसके | इसके अतिरिक्त, क्यूनिफ़ॉर्म मिश्रित डेटा प्रकारों के रूप में सूचियाँ प्रदान करता है। नीचे दिया गया उदाहरण एक वेरिएबल की परिभाषा दिखाता है तीन तत्वों वाली एक फ़ाइल सूची के रूप में एक वेरिएबल xs की परिभाषा दिखाता है। | ||
<syntaxhighlight lang="erlang"> | <syntaxhighlight lang="erlang"> | ||
Line 196: | Line 192: | ||
['a.txt', 'b.txt', 'c.txt' : File]; | ['a.txt', 'b.txt', 'c.txt' : File]; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
सूचियों को | सूचियों को <code>for</code> और फोल्ड संक्रियक के साथ संसाधित किया जा सकता है। इसमें, तत्व-वार सूची का उपभोग करने के लिए संक्रियक को कई सूचियाँ दी जा सकती हैं (समान)। | ||
<code>for/list</code> रैकेट (प्रोग्रामिंग भाषा) में, <code>mapcar</code> [[सामान्य लिस्प]] में या <code>zipwith</code> एर्लांग (प्रोग्रामिंग भाषा) में)। | <code>for/list</code> रैकेट (प्रोग्रामिंग भाषा) में, <code>mapcar</code> [[सामान्य लिस्प]] में या <code>zipwith</code> एर्लांग (प्रोग्रामिंग भाषा) में)। | ||
नीचे दिया गया उदाहरण दिखाता है कि किसी एकल सूची को कैसे | नीचे दिया गया उदाहरण दिखाता है कि किसी एकल सूची को कैसे आलेख्यपत्र किया जाए, परिणाम एक फ़ाइल सूची होगी। | ||
<syntaxhighlight lang="ruby"> | <syntaxhighlight lang="ruby"> | ||
Line 208: | Line 204: | ||
end; | end; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
नीचे दिया गया उदाहरण दिखाता है कि दो सूचियों को कैसे | नीचे दिया गया उदाहरण दिखाता है कि दो सूचियों को कैसे संकुचित किया जाए, जिसके परिणामस्वरूप फ़ाइल सूची भी बन जाएगी। | ||
<syntaxhighlight lang="ruby"> | <syntaxhighlight lang="ruby"> | ||
Line 216: | Line 212: | ||
end; | end; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
अंत में, फोल्ड | अंत में, फोल्ड संक्रियक का उपयोग करके सूचियों को एकत्रित किया जा सकता है। निम्नलिखित उदाहरण किसी सूची के तत्वों का सार प्रस्तुत करता है। | ||
<syntaxhighlight lang="text"> | <syntaxhighlight lang="text"> | ||
Line 223: | Line 219: | ||
end; | end; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==समानांतर निष्पादन== | ==समानांतर निष्पादन== | ||
क्यूनिफ़ॉर्म एक विशुद्ध रूप से कार्यात्मक भाषा है, अर्थात, यह [[संदर्भ (कंप्यूटर विज्ञान)|परिवर्तनशील संदर्भों]] का समर्थन नहीं करती है। परिणामस्वरूप, यह किसी प्रोग्राम को समानांतर भागों में विभाजित करने के लिए | क्यूनिफ़ॉर्म एक विशुद्ध रूप से कार्यात्मक भाषा है, अर्थात, यह [[संदर्भ (कंप्यूटर विज्ञान)|परिवर्तनशील संदर्भों]] का समर्थन नहीं करती है। परिणामस्वरूप, यह किसी प्रोग्राम को समानांतर भागों में विभाजित करने के लिए अवतरण-स्वतंत्रता का उपयोग कर सकता है। क्यूनिफ़ॉर्म अनुसूचक इन भागों को कार्यकर्ता ग्रंथि में वितरित करता है। इसके अतिरिक्त, क्यूनिफॉर्म केवल मूल्यों की गणना करने के लिए कॉल-बाय-नाम(नाम आह्वान) मूल्यांकन रणनीति का उपयोग करता है, यदि वे गणना परिणाम में योगदान करते हैं। अंत में, बाह्य फलन अनुप्रयोग उन गणनाओं को गति देने के लिए [[संस्मरण]] हैं जिनमें पहले से प्राप्त परिणाम सम्मिलित हैं। | ||
उदाहरण के लिए, निम्नलिखित क्यूनिफ़ॉर्म प्रोग्राम <code>f</code> और <code>g</code> के अनुप्रयोगों को समानांतर में चलने की अनुमति देता है जबकि <code>h</code> निर्भर है और इसे केवल तभी | उदाहरण के लिए, निम्नलिखित क्यूनिफ़ॉर्म प्रोग्राम <code>f</code> और <code>g</code> के अनुप्रयोगों को समानांतर में चलने की अनुमति देता है जबकि <code>h</code> निर्भर है और इसे केवल तभी प्रारम्भ किया जा सकता है जब<code>f</code> और <code>g</code> दोनों समाप्त हो जाएं। | ||
{{pre|1= | {{pre|1= | ||
Line 238: | Line 233: | ||
}} | }} | ||
निम्नलिखित क्यूनिफ़ॉर्म प्रोग्राम | निम्नलिखित क्यूनिफ़ॉर्म प्रोग्राम फलन तीन-तत्व सूची पर <code>f</code> को आलेख्यपत्र करके फलन <code>f</code> के तीन समानांतर अनुप्रयोग बनाता है | ||
{{pre|1= | {{pre|1= | ||
Line 250: | Line 245: | ||
}} | }} | ||
इसी प्रकार, | इसी प्रकार, अभिलेख <code>r</code> के निर्माण में <code>f</code> और <code>g</code> के अनुप्रयोग स्वतंत्र हैं और, इस प्रकार, समानांतर में चलाया जा सकता है: | ||
{{sxhl|lang=erlang|1= | {{sxhl|lang=erlang|1= | ||
Line 259: | Line 254: | ||
==उदाहरण== | ==उदाहरण== | ||
एक हैलो-वर्ल्ड स्क्रिप्ट | एक हैलो-वर्ल्ड स्क्रिप्ट | ||
<syntaxhighlight lang="ruby"> | <syntaxhighlight lang="ruby"> | ||
def greet( person : Str ) -> <out : Str> | def greet( person : Str ) -> <out : Str> | ||
Line 268: | Line 263: | ||
( greet( person = "world" )|out ); | ( greet( person = "world" )|out ); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
यह स्क्रिप्ट बैश में एक टास्क <code>greet</code> को परिभाषित करती है जो इसके स्ट्रिंग तर्क के साथ <code>"Hello</code>" जोड़ता है। | यह स्क्रिप्ट बैश में एक टास्क <code>greet</code> को परिभाषित करती है जो इसके स्ट्रिंग तर्क के साथ <code>"Hello</code>" जोड़ता है। फलन एकल स्ट्रिंग क्षेत्रों के साथ एक अभिलेख तैयार करता है। <code>greet</code> लागू करने पर, तर्क करने वाले <code>person</code> को स्ट्रिंग "<code>world"</code> से बांधने से अभिलेख <code><out = "Hello world"></code> बनता है। इस अभिलेख को इसके क्षेत्र में प्रक्षेपित करने से स्ट्रिंग "<code>Hello world"</code> का मूल्यांकन होता है। | ||
बैश में किसी कार्य को परिभाषित करके कमांड लाइन | बैश में किसी कार्य को परिभाषित करके कमांड लाइन उपकरण को एकीकृत किया जा सकता है: | ||
<syntaxhighlight lang="ruby"> | <syntaxhighlight lang="ruby"> | ||
def samtoolsSort( bam : File ) -> <sorted : File> | def samtoolsSort( bam : File ) -> <sorted : File> | ||
Line 278: | Line 273: | ||
}* | }* | ||
</syntaxhighlight> | </syntaxhighlight> | ||
इस उदाहरण में एक कार्य <code>samtoolsSort</code> परिभाषित किया गया है। यह | इस उदाहरण में एक कार्य <code>samtoolsSort</code> परिभाषित किया गया है। यह उपकरण [[SAMtools]](समतूल) को कॉल करता है, इनपुट फ़ाइल का उपभोग करता है, बाम(BAM) प्रारूप में, और एक क्रमबद्ध आउटपुट फ़ाइल का उत्पादन भी बाम(BAM) प्रारूप में करता है। | ||
==रिलीज़ इतिहास== | ==रिलीज़ इतिहास== | ||
Line 284: | Line 279: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! | ! संस्करण !! उपस्थिति !! कार्यान्वयन भाषा !! वितरण मंच !! बाह्य भाषा | ||
|- | |- | ||
! 1.0.0 | ! 1.0.0 | ||
| May 2014 | | May 2014 | ||
| [[Java (programming language)| | | [[Java (programming language)|जावा]] | ||
| [[Apache Hadoop]] | | [[Apache Hadoop|अपाचे हडूप]] | ||
| | | बैश, कॉमन लिसप, जीएनयु बीन शैल, पर्ल, पाइथन, आर, स्काला | ||
|- | |- | ||
! 2.0.x | ! 2.0.x | ||
| Mar. 2015 | | Mar. 2015 | ||
| [[Java (programming language)| | | [[Java (programming language)|जावा]] | ||
| [[HTCondor]], [[Apache Hadoop]] | | [[HTCondor|एच्टीकोंडोर]], [[Apache Hadoop|अपाचे हडूप]] | ||
| | | बैश, बीन शैल, कॉमन लिसप, मैटलैब , जीएनयु बीन शैल, पर्ल, पाइथन, आर, स्काला | ||
|- | |- | ||
! 2.2.x | ! 2.2.x | ||
| Apr. 2016 | | Apr. 2016 | ||
| [[Erlang (programming language)| | | [[Erlang (programming language)|एर्लांग]] | ||
| [[HTCondor]], [[Apache Hadoop]] | | [[HTCondor|एच्टीकोंडोर]], [[Apache Hadoop|अपाचे हडूप]] | ||
| | | बैश, पर्ल, पाइथन, आर | ||
|- | |- | ||
! 3.0.x | ! 3.0.x | ||
| Feb. 2018 | | Feb. 2018 | ||
| [[Erlang (programming language)| | | [[Erlang (programming language)|एर्लांग]] | ||
| | | डिस्ट्रिब्यूटेड एर्लांग | ||
| | | बैश, एर्लांग, जावा, मैटलैब , जीएनयु बीन शैल, पर्ल, पाइथन, आर, स्काला, Racket | ||
|} | |} | ||
अप्रैल 2016 में, क्यूनिफ़ॉर्म की कार्यान्वयन भाषा जावा से एर्लांग में बदल गई और, फरवरी 2018 में, इसका प्रमुख वितरित निष्पादन प्लेटफ़ॉर्म Hadoop से वितरित एर्लांग में बदल गया। इसके अतिरिक्त, 2015 से 2018 तक HTCondor को एक वैकल्पिक निष्पादन मंच के रूप में बनाए रखा गया था। | अप्रैल 2016 में, क्यूनिफ़ॉर्म की कार्यान्वयन भाषा जावा से एर्लांग में बदल गई और, फरवरी 2018 में, इसका प्रमुख वितरित निष्पादन प्लेटफ़ॉर्म Hadoop से वितरित एर्लांग में बदल गया। इसके अतिरिक्त, 2015 से 2018 तक HTCondor([[HTCondor|एच्टीकोंडोर]]) को एक वैकल्पिक निष्पादन मंच के रूप में बनाए रखा गया था। | ||
क्यूनिफॉर्म की सतह वाक्यविन्यास को दो बार संशोधित किया गया था, जैसा कि प्रमुख संस्करण संख्या में दर्शाया गया है। | क्यूनिफॉर्म की सतह वाक्यविन्यास को दो बार संशोधित किया गया था, जैसा कि प्रमुख संस्करण संख्या में दर्शाया गया है। | ||
Line 316: | Line 311: | ||
===संस्करण 1=== | ===संस्करण 1=== | ||
मई 2014 में प्रकाशित अपने पहले | मई 2014 में प्रकाशित अपने पहले प्रारूप में, क्यूनिफ़ॉर्म मेक (सॉफ़्टवेयर) से निकटता से संबंधित था, जिसमें उसने एक स्थिर डेटा निर्भरता ग्राफ़ का निर्माण किया था जिसे व्याख्याता ने निष्पादन के समय ट्रेस किया था। बाद के संस्करणों में मुख्य अंतर सनियम, पुनरावर्तन, या स्थैतिक प्रकार की जाँच की कमी थी। टिल्ड <code>~</code> के साथ एकल-उद्धृत स्ट्रिंग मानों को जोड़कर फ़ाइलों को स्ट्रिंग्स से अलग किया गया था। स्क्रिप्ट की क्वेरी अभिव्यक्ति को <code>target</code> कीवर्ड के साथ प्रस्तुत किया गया था। बैश डिफ़ॉल्ट बाह्य भाषा थी. फलन एप्लिकेशन को एक <code>apply</code> फॉर्म का उपयोग करके निष्पादित किया जाना था जिसने <code>task</code>पहले कीवर्ड तर्क के रूप में। एक साल बाद, इस सतह वाक्य - विन्यास को एक सुव्यवस्थित लेकिन समान संस्करण द्वारा बदल दिया गया। | ||
निम्न उदाहरण स्क्रिप्ट एक FTP सर्वर से एक संदर्भ जीनोम डाउनलोड करती है। | निम्न उदाहरण स्क्रिप्ट एक FTP (एफटीपि)सर्वर से एक संदर्भ जीनोम डाउनलोड करती है। | ||
declare download-ref-genome; | declare download-ref-genome; | ||
Line 340: | Line 335: | ||
===संस्करण 2=== | ===संस्करण 2=== | ||
[[File:Cf screenshot.jpg|thumb|क्यूनिफॉर्म 2.0.3 के लिए स्विंग-आधारित संपादक और आरईपीएल]]क्यूनिफॉर्म सतह वाक्यविन्यास का दूसरा | [[File:Cf screenshot.jpg|thumb|क्यूनिफॉर्म 2.0.3 के लिए स्विंग-आधारित संपादक और आरईपीएल]]क्यूनिफॉर्म सतह वाक्यविन्यास का दूसरा प्रारूप, पहली बार मार्च 2015 में प्रकाशित हुआ, क्यूनिफॉर्म की कार्यान्वयन भाषा के रूप में जावा से एरलांग में परिवर्तनकाल के बाद तीन वर्षों तक उपयोग में रहा। मूल्यांकन पहले के तरीकों से अलग है जिसमें व्याख्याता एक स्थिर ग्राफ़ को पार करने के स्थान पर एक क्वेरी अभिव्यक्ति को कम कर देता है। जिस समय सतही वाक्यविन्यास उपयोग में रहा, उस समय व्याख्याता को औपचारिक रूप दिया गया और सरलीकृत किया गया, जिसके परिणामस्वरूप क्यूनिफॉर्म के शब्दार्थ का पहला विवरण सामने आया। वाक्यविन्यास में सनियम विशेषताएँ थीं। यद्यपि, बूलियन्स को सूचियों के रूप में एन्कोड(कूटलेखन) किया गया था, खाली सूची को बूलियन गलत के रूप में और अतिरिक्त-रिक्त सूची को बूलियन सत्य के रूप में पुनर्चक्रित किया गया था। पुनरावर्तन को बाद में औपचारिकता के उपोत्पाद के रूप में जोड़ा गया। यद्यपि, स्थैतिक प्रकार की जाँच केवल संस्करण 3 में प्रारम्भ की गई थी। | ||
निम्न स्क्रिप्ट एक ज़िप्पड(Zipped) फ़ाइल को विघटित करती है और इसे समान आकार के विभाजनों में विभाजित करती है। | |||
deftask unzip( <out( File )> : zip( File ) ) in bash *{ | deftask unzip( <out( File )> : zip( File ) ) in bash *{ | ||
Line 364: | Line 356: | ||
===संस्करण 3=== | ===संस्करण 3=== | ||
क्यूनिफ़ॉर्म के सतह | क्यूनिफ़ॉर्म के सतह वाक्य - विन्यास का वर्तमान संस्करण, पहले के प्रारूप की तुलना में, मुख्यधारा की कार्यात्मक प्रोग्रामिंग लैंग्वेज के अंतर को बंद करने का एक प्रयास है। इसमें एक सरल, सांख्यिकीय रूप से जांची गई प्रकार की प्रणाली है और दूसरे प्रकार की मिश्रित डेटा संरचना के रूप में सूचियों के अतिरिक्त अभिलेख भी प्रस्तुत करती है। बूलियन्स एक अलग आधार डेटा प्रकार हैं। | ||
निम्न स्क्रिप्ट एक फ़ाइल को अनटार्स करती है जिसके परिणामस्वरूप एक फ़ाइल सूची बनती है। | निम्न स्क्रिप्ट एक फ़ाइल को अनटार्स करती है जिसके परिणामस्वरूप एक फ़ाइल सूची बनती है। |
Revision as of 12:13, 19 July 2023
Paradigm | functional, scientific workflow |
---|---|
द्वारा डिज़ाइन किया गया | Jörgen Brandt |
पहली प्रस्तुति | 2013 |
Stable release | 3.0.4
/ November 19, 2018 |
टाइपिंग अनुशासन | static, simple types |
कार्यान्वयन भाषा | Erlang |
ओएस | Linux, Mac OS |
लाइसेंस | Apache License 2.0 |
फ़ाइल नाम एक्सटेंशनएस | .cfl |
वेबसाइट | cuneiform-lang |
Influenced by | |
Swift (parallel scripting language) |
क्यूनिफॉर्म बड़े स्तर पर वैज्ञानिक डेटा विश्लेषण के लिए एक अनावृत-स्रोत कार्यप्रवाह भाषा है।[1][2] यह समानांतर गणना को बढ़ावा देने वाली एक स्थिर रूप से प्ररूप की गई कार्यात्मक प्रोग्रामिंग भाषा है। इसमें एक बहुमुखी बाह्य फलन अंतराफलक है जो उपयोगकर्ताओं को कई बाहरी प्रोग्रामिंग लैंग्वेज से सॉफ़्टवेयर को एकीकृत करने की अनुमति देता है। संगठनात्मक स्तर पर क्यूनिफॉर्म इसे संरचना-पूर्ण बनाने के लिए सनियम उपखंड और सामान्य प्रत्यावर्तन जैसी सुविधाएं प्रदान करता है।इसमें, क्यूनिफॉर्म एक कार्यात्मकता प्रोग्रामिंग भाषा की व्यापकता की प्रस्तुत करते हुए टवेर्ना(Taverna), केएनआईएमई(KNIME), या गैलेक्सी(GALAXY) जैसे वैज्ञानिक कार्यप्रवाह प्रणाली और आलेख्यपत्ररेडस या पिग लैटिन जैसे बड़े स्तर पर डेटा विश्लेषण प्रोग्रामिंग प्रतिमान के बीच अंतर को बंद करने का प्रयास है।
क्यूनिफॉर्म को वितरित एरलांग (प्रोग्रामिंग भाषा) में लागू किया गया है। यदि वितरित प्रकार में चलाया जाता है तो यह चमक या सेफ (या किसी अन्य फ़ाइल प्रणाली का एक-रूप होना एकीकरण, जैसे HDFS) जैसे POSIX-अनुपालक वितरित फ़ाइल प्रणाली को चलाता है। वैकल्पिक रूप से, क्यूनिफ़ॉर्म स्क्रिप्ट(लिपि) को HTCondor या Hadoop के शीर्ष पर निष्पादित किया जा सकता है।[3][4][5][6]
क्यूनिफॉर्म पीटर केली के काम से प्रभावित है जो वैज्ञानिक कार्यप्रवाह निष्पादन के लिए एक प्रतिमान के रूप में कार्यात्मक प्रोग्रामिंग का प्रस्ताव करता है।[7][8]इसमें, क्यूनिफ़ॉर्म तत्पर जैसी डेटाप्रवाह प्रोग्रामिंग पर आधारित संबंधित कार्यप्रवाह लैंग्वेज से अलग है।[9]
बाहरी सॉफ़्टवेयर एकीकरण
बाहरी उपकरण और लाइब्रेरी (उदाहरण के लिए, आर या पायथन लाइब्रेरी) एक बाह्य फलन अंतराफलक के माध्यम से एकीकृत होते हैं। इसमें यह सदृश है, उदाहरण के लिए, केएनआईएमई जो टुकड़ा ग्रंथि के माध्यम से बाहरी सॉफ़्टवेयर के उपयोग की अनुमति देता है, या टवेर्ना जो जावा सॉफ़्टवेयर को एकीकृत करने के लिए बीनशेल सेवाएं प्रदान करता है। किसी कार्य को किसी बाह्य भाषा में परिभाषित करके किसी बाहरी उपकरण या लाइब्रेरी के एपीआई(API) का उपयोग करना संभव है। इस तरह, किसी आवरण को लिखने या उपकरण को पुनः लागू करने की आवश्यकता के बिना उपकरण को सीधे एकीकृत किया जा सकता है।[10]
वर्तमान में समर्थित बाह्य प्रोग्रामिंग भाषाएँ हैं:
- बैश (Bash)
- अमृत (Elixir)
- एर्लांग (Erlang)
- जावा (JAVA)
- जावास्क्रिप्ट(Javascript)
- मैटलैब(MATLAB)
- जीएनयू ऑक्टेव(Gnu Octave)
- पर्ल(Perl)
- पायथन (Python)
- आर (R)
- रैकेट (Racket)
AWK(ऑक) और gnuplot(गनप्लेट) के लिए बाह्य भाषा समर्थन नियोजित परिवर्धन है।
प्रणाली प्ररूप करें
क्यूनिफ़ॉर्म एक सरल, सांख्यिकीय रूप से जांची गई प्रकार की प्रणाली प्रदान करता है।[11] जबकि क्यूनिफ़ॉर्म सूचियाँ मिश्रित डेटा प्रकारो के रूप में प्रदान करता है, यह क्रम त्रुटियों की संभावना से बचने के लिए पारंपरिक सूची पहुंचकर्ता (हेड और टेल) को छोड़ देता है जो खाली सूची तक पहुँचने पर उत्पन्न हो सकती हैं। इसके स्थान पर सूचियों को केवल प्रतिचित्रण या वलन द्वारा सभी या कुछ भी नहीं व्यवहार में प्रवेश किया जाता है। इसके अतिरिक्त, क्यूनिफॉर्म (संगठनात्मक स्तर पर) अंकगणित को छोड़ देता है जो शून्य से विभाजन की संभावना को बाहर कर देता है। किसी भी आंशिक रूप से परिभाषित संचालन की चूक यह आश्वासन देती है कि क्रम त्रुटियां विशेष रूप से बाह्य कोड में उत्पन्न हो सकती हैं।
आधार डेटा प्रकार
आधार डेटा प्रकार के रूप में क्यूनिफॉर्म बूलियन्स, स्ट्रिंग्स और फ़ाइलें प्रदान करता है। इसमें, फ़ाइलों का उपयोग बाह्य कार्यों के बीच यथेच्छाचार प्रारूप में डेटा का आदान-प्रदान करने के लिए किया जाता है।
अभिलेख और प्रतिरूप मिलान
क्यूनिफॉर्म यौगिक डेटा प्रकारों के रूप में अभिलेख(संरचनाएं) प्रदान करता है। नीचे दिया गया उदाहरण एक वेरिएबल(परिवर्तनीय) r
की परिभाषा दिखाता है जो दो क्षेत्रों a1 और a2 के साथ एक अभिलेख है, पहला एक स्ट्रिंग है और दूसरा एक बूलियन है।
let r : <a1 : Str, a2 : Bool> =
<a1 = "my string", a2 = true>;
अभिलेख् को प्रक्षेपण के माध्यम से या प्रतिरूप मिलान के माध्यम से अभिगम किया जा सकता है। नीचे दिया गया उदाहरण अभिलेख r से दो क्षेत्रों a1 और a2 निकालता है।
let a1 : Str = ( r|a1 );
let <a2 = a2 : Bool> = r;
सूचियाँ और सूची प्रसंस्करण
इसके अतिरिक्त, क्यूनिफ़ॉर्म मिश्रित डेटा प्रकारों के रूप में सूचियाँ प्रदान करता है। नीचे दिया गया उदाहरण एक वेरिएबल की परिभाषा दिखाता है तीन तत्वों वाली एक फ़ाइल सूची के रूप में एक वेरिएबल xs की परिभाषा दिखाता है।
let xs : [File] =
['a.txt', 'b.txt', 'c.txt' : File];
सूचियों को for
और फोल्ड संक्रियक के साथ संसाधित किया जा सकता है। इसमें, तत्व-वार सूची का उपभोग करने के लिए संक्रियक को कई सूचियाँ दी जा सकती हैं (समान)।
for/list
रैकेट (प्रोग्रामिंग भाषा) में, mapcar
सामान्य लिस्प में या zipwith
एर्लांग (प्रोग्रामिंग भाषा) में)।
नीचे दिया गया उदाहरण दिखाता है कि किसी एकल सूची को कैसे आलेख्यपत्र किया जाए, परिणाम एक फ़ाइल सूची होगी।
for x <- xs do
process-one( arg1 = x )
: File
end;
नीचे दिया गया उदाहरण दिखाता है कि दो सूचियों को कैसे संकुचित किया जाए, जिसके परिणामस्वरूप फ़ाइल सूची भी बन जाएगी।
for x <- xs, y <- ys do
process-two( arg1 = x, arg2 = y )
: File
end;
अंत में, फोल्ड संक्रियक का उपयोग करके सूचियों को एकत्रित किया जा सकता है। निम्नलिखित उदाहरण किसी सूची के तत्वों का सार प्रस्तुत करता है।
fold acc = 0, x <- xs do
add( a = acc, b = x )
end;
समानांतर निष्पादन
क्यूनिफ़ॉर्म एक विशुद्ध रूप से कार्यात्मक भाषा है, अर्थात, यह परिवर्तनशील संदर्भों का समर्थन नहीं करती है। परिणामस्वरूप, यह किसी प्रोग्राम को समानांतर भागों में विभाजित करने के लिए अवतरण-स्वतंत्रता का उपयोग कर सकता है। क्यूनिफ़ॉर्म अनुसूचक इन भागों को कार्यकर्ता ग्रंथि में वितरित करता है। इसके अतिरिक्त, क्यूनिफॉर्म केवल मूल्यों की गणना करने के लिए कॉल-बाय-नाम(नाम आह्वान) मूल्यांकन रणनीति का उपयोग करता है, यदि वे गणना परिणाम में योगदान करते हैं। अंत में, बाह्य फलन अनुप्रयोग उन गणनाओं को गति देने के लिए संस्मरण हैं जिनमें पहले से प्राप्त परिणाम सम्मिलित हैं।
उदाहरण के लिए, निम्नलिखित क्यूनिफ़ॉर्म प्रोग्राम f
और g
के अनुप्रयोगों को समानांतर में चलने की अनुमति देता है जबकि h
निर्भर है और इसे केवल तभी प्रारम्भ किया जा सकता है जबf
और g
दोनों समाप्त हो जाएं।
let output-of-f : File = f(); let output-of-g : File = g(); h( f = output-of-f, g = output-of-g );
निम्नलिखित क्यूनिफ़ॉर्म प्रोग्राम फलन तीन-तत्व सूची पर f
को आलेख्यपत्र करके फलन f
के तीन समानांतर अनुप्रयोग बनाता है
let xs : [File] = ['a.txt', 'b.txt', 'c.txt' : File]; for x <- xs do f( x = x ) : File end;
इसी प्रकार, अभिलेख r
के निर्माण में f
और g
के अनुप्रयोग स्वतंत्र हैं और, इस प्रकार, समानांतर में चलाया जा सकता है:
let r : <a : File, b : File> =
<a = f(), b = g()>;
उदाहरण
एक हैलो-वर्ल्ड स्क्रिप्ट
def greet( person : Str ) -> <out : Str>
in Bash *{
out="Hello $person"
}*
( greet( person = "world" )|out );
यह स्क्रिप्ट बैश में एक टास्क greet
को परिभाषित करती है जो इसके स्ट्रिंग तर्क के साथ "Hello
" जोड़ता है। फलन एकल स्ट्रिंग क्षेत्रों के साथ एक अभिलेख तैयार करता है। greet
लागू करने पर, तर्क करने वाले person
को स्ट्रिंग "world"
से बांधने से अभिलेख <out = "Hello world">
बनता है। इस अभिलेख को इसके क्षेत्र में प्रक्षेपित करने से स्ट्रिंग "Hello world"
का मूल्यांकन होता है।
बैश में किसी कार्य को परिभाषित करके कमांड लाइन उपकरण को एकीकृत किया जा सकता है:
def samtoolsSort( bam : File ) -> <sorted : File>
in Bash *{
sorted=sorted.bam
samtools sort -m 2G $bam -o $sorted
}*
इस उदाहरण में एक कार्य samtoolsSort
परिभाषित किया गया है। यह उपकरण SAMtools(समतूल) को कॉल करता है, इनपुट फ़ाइल का उपभोग करता है, बाम(BAM) प्रारूप में, और एक क्रमबद्ध आउटपुट फ़ाइल का उत्पादन भी बाम(BAM) प्रारूप में करता है।
रिलीज़ इतिहास
संस्करण | उपस्थिति | कार्यान्वयन भाषा | वितरण मंच | बाह्य भाषा |
---|---|---|---|---|
1.0.0 | May 2014 | जावा | अपाचे हडूप | बैश, कॉमन लिसप, जीएनयु बीन शैल, पर्ल, पाइथन, आर, स्काला |
2.0.x | Mar. 2015 | जावा | एच्टीकोंडोर, अपाचे हडूप | बैश, बीन शैल, कॉमन लिसप, मैटलैब , जीएनयु बीन शैल, पर्ल, पाइथन, आर, स्काला |
2.2.x | Apr. 2016 | एर्लांग | एच्टीकोंडोर, अपाचे हडूप | बैश, पर्ल, पाइथन, आर |
3.0.x | Feb. 2018 | एर्लांग | डिस्ट्रिब्यूटेड एर्लांग | बैश, एर्लांग, जावा, मैटलैब , जीएनयु बीन शैल, पर्ल, पाइथन, आर, स्काला, Racket |
अप्रैल 2016 में, क्यूनिफ़ॉर्म की कार्यान्वयन भाषा जावा से एर्लांग में बदल गई और, फरवरी 2018 में, इसका प्रमुख वितरित निष्पादन प्लेटफ़ॉर्म Hadoop से वितरित एर्लांग में बदल गया। इसके अतिरिक्त, 2015 से 2018 तक HTCondor(एच्टीकोंडोर) को एक वैकल्पिक निष्पादन मंच के रूप में बनाए रखा गया था।
क्यूनिफॉर्म की सतह वाक्यविन्यास को दो बार संशोधित किया गया था, जैसा कि प्रमुख संस्करण संख्या में दर्शाया गया है।
संस्करण 1
मई 2014 में प्रकाशित अपने पहले प्रारूप में, क्यूनिफ़ॉर्म मेक (सॉफ़्टवेयर) से निकटता से संबंधित था, जिसमें उसने एक स्थिर डेटा निर्भरता ग्राफ़ का निर्माण किया था जिसे व्याख्याता ने निष्पादन के समय ट्रेस किया था। बाद के संस्करणों में मुख्य अंतर सनियम, पुनरावर्तन, या स्थैतिक प्रकार की जाँच की कमी थी। टिल्ड ~
के साथ एकल-उद्धृत स्ट्रिंग मानों को जोड़कर फ़ाइलों को स्ट्रिंग्स से अलग किया गया था। स्क्रिप्ट की क्वेरी अभिव्यक्ति को target
कीवर्ड के साथ प्रस्तुत किया गया था। बैश डिफ़ॉल्ट बाह्य भाषा थी. फलन एप्लिकेशन को एक apply
फॉर्म का उपयोग करके निष्पादित किया जाना था जिसने task
पहले कीवर्ड तर्क के रूप में। एक साल बाद, इस सतह वाक्य - विन्यास को एक सुव्यवस्थित लेकिन समान संस्करण द्वारा बदल दिया गया।
निम्न उदाहरण स्क्रिप्ट एक FTP (एफटीपि)सर्वर से एक संदर्भ जीनोम डाउनलोड करती है।
declare download-ref-genome;
deftask download-fa( fa : ~path ~id ) *{ wget $path/$id.fa.gz gunzip $id.fa.gz mv $id.fa $fa }* ref-genome-path = ~'ftp://hgdownload.cse.ucsc.edu/goldenPath/hg19/chromosomes'; ref-genome-id = ~'chr22'; ref-genome = apply( task : download-fa path : ref-genome-path id : ref-genome-id ); target ref-genome;
संस्करण 2
क्यूनिफॉर्म सतह वाक्यविन्यास का दूसरा प्रारूप, पहली बार मार्च 2015 में प्रकाशित हुआ, क्यूनिफॉर्म की कार्यान्वयन भाषा के रूप में जावा से एरलांग में परिवर्तनकाल के बाद तीन वर्षों तक उपयोग में रहा। मूल्यांकन पहले के तरीकों से अलग है जिसमें व्याख्याता एक स्थिर ग्राफ़ को पार करने के स्थान पर एक क्वेरी अभिव्यक्ति को कम कर देता है। जिस समय सतही वाक्यविन्यास उपयोग में रहा, उस समय व्याख्याता को औपचारिक रूप दिया गया और सरलीकृत किया गया, जिसके परिणामस्वरूप क्यूनिफॉर्म के शब्दार्थ का पहला विवरण सामने आया। वाक्यविन्यास में सनियम विशेषताएँ थीं। यद्यपि, बूलियन्स को सूचियों के रूप में एन्कोड(कूटलेखन) किया गया था, खाली सूची को बूलियन गलत के रूप में और अतिरिक्त-रिक्त सूची को बूलियन सत्य के रूप में पुनर्चक्रित किया गया था। पुनरावर्तन को बाद में औपचारिकता के उपोत्पाद के रूप में जोड़ा गया। यद्यपि, स्थैतिक प्रकार की जाँच केवल संस्करण 3 में प्रारम्भ की गई थी।
निम्न स्क्रिप्ट एक ज़िप्पड(Zipped) फ़ाइल को विघटित करती है और इसे समान आकार के विभाजनों में विभाजित करती है।
deftask unzip( <out( File )> : zip( File ) ) in bash *{
unzip -d dir $zip out=`ls dir | awk '{print "dir/" $0}'` }* deftask split( <out( File )> : file( File ) ) in bash *{ split -l 1024 $file txt out=txt* }* sotu = "sotu/stateoftheunion1790-2014.txt.zip"; fileLst = split( file: unzip( zip: sotu ) ); fileLst;
संस्करण 3
क्यूनिफ़ॉर्म के सतह वाक्य - विन्यास का वर्तमान संस्करण, पहले के प्रारूप की तुलना में, मुख्यधारा की कार्यात्मक प्रोग्रामिंग लैंग्वेज के अंतर को बंद करने का एक प्रयास है। इसमें एक सरल, सांख्यिकीय रूप से जांची गई प्रकार की प्रणाली है और दूसरे प्रकार की मिश्रित डेटा संरचना के रूप में सूचियों के अतिरिक्त अभिलेख भी प्रस्तुत करती है। बूलियन्स एक अलग आधार डेटा प्रकार हैं।
निम्न स्क्रिप्ट एक फ़ाइल को अनटार्स करती है जिसके परिणामस्वरूप एक फ़ाइल सूची बनती है।
def untar( tar : File ) -> <fileLst : [File]>
in Bash *{ tar xf $tar fileLst=`tar tf $tar` }* let hg38Tar : File = 'hg38/hg38.tar'; let <fileLst = faLst : [File]> = untar( tar = hg38Tar ); faLst;
संदर्भ
- ↑ "Joergen7/Cuneiform". GitHub. 14 October 2021.
- ↑ Brandt, Jörgen; Bux, Marc N.; Leser, Ulf (2015). "Cuneiform: A functional language for large scale scientific data analysis" (PDF). Proceedings of the Workshops of the EDBT/ICDT. 1330: 17–26.
- ↑ "Scalable Multi-Language Data Analysis on Beam: The Cuneiform Experience by Jörgen Brandt". Erlang Central. Archived from the original on 2 October 2016. Retrieved 28 October 2016.
- ↑ Bux, Marc; Brandt, Jörgen; Lipka, Carsten; Hakimzadeh, Kamal; Dowling, Jim; Leser, Ulf (2015). "SAASFEE: scalable scientific workflow execution engine" (PDF). Proceedings of the VLDB Endowment. 8 (12): 1892–1895. doi:10.14778/2824032.2824094.
- ↑ Bessani, Alysson; Brandt, Jörgen; Bux, Marc; Cogo, Vinicius; Dimitrova, Lora; Dowling, Jim; Gholami, Ali; Hakimzadeh, Kamal; Hummel, Michael; Ismail, Mahmoud; Laure, Erwin; Leser, Ulf; Litton, Jan-Eric; Martinez, Roxanna; Niazi, Salman; Reichel, Jane; Zimmermann, Karin (2015). "Biobankcloud: a platform for the secure storage, sharing, and processing of large biomedical data sets" (PDF). The First International Workshop on Data Management and Analytics for Medicine and Healthcare (DMAH 2015).
- ↑ "Scalable Multi-Language Data Analysis on Beam: The Cuneiform Experience". Erlang-factory.com. Retrieved 28 October 2016.
- ↑ Kelly, Peter M.; Coddington, Paul D.; Wendelborn, Andrew L. (2009). "Lambda calculus as a workflow model". Concurrency and Computation: Practice and Experience. 21 (16): 1999–2017. doi:10.1002/cpe.1448. S2CID 10833434.
- ↑ Barseghian, Derik; Altintas, Ilkay; Jones, Matthew B.; Crawl, Daniel; Potter, Nathan; Gallagher, James; Cornillon, Peter; Schildhauer, Mark; Borer, Elizabeth T.; Seabloom, Eric W. (2010). "Workflows and extensions to the Kepler scientific workflow system to support environmental sensor data access and analysis" (PDF). Ecological Informatics. 5 (1): 42–50. doi:10.1016/j.ecoinf.2009.08.008. S2CID 16392118.
- ↑ Di Tommaso, Paolo; Chatzou, Maria; Floden, Evan W; Barja, Pablo Prieto; Palumbo, Emilio; Notredame, Cedric (2017). "Nextflow enables reproducible computational workflows". Nature Biotechnology. 35 (4): 316–319. doi:10.1038/nbt.3820. PMID 28398311. S2CID 9690740.
- ↑ "एर्लांग में एक कार्यात्मक वर्कफ़्लो भाषा कार्यान्वयन" (PDF). Retrieved 28 October 2016.
- ↑ Brandt, Jörgen; Reisig, Wolfgang; Leser, Ulf (2017). "Computation semantics of the functional scientific workflow language Cuneiform". Journal of Functional Programming. 27. doi:10.1017/S0956796817000119. S2CID 6128299.