Cuneiform语言
编程范型 | 纯函 |
---|---|
Jörgen Brandt | |
发行时间 | 2013 |
| |
简单类型 | |
Erlang | |
Linux, Mac OS | |
Apache许可证 2.0 | |
.cfl | |
cuneiform-lang | |
Swift (并行 |
Cuneiform
概 述
[编辑]Cuneiform尝试
Cuneiform
Cuneiform受到
扩展软件集成
[编辑]类型系 统
[编辑]Cuneiformhead
tail
),以避map
fold
,以全
基 础数据 类型
[编辑]Cuneiform
记录和 模 式 匹 配
[编辑]Cuneiformr
,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
fold
for
for/list
、Common Lispmapcar
zipwith
)。
map
,结果
for x <- xs do
process-one( arg1 = x )
: File
end;
zip
两个
for x <- xs, y <- ys do
process-two( arg1 = x, arg2 = y )
: File
end;
fold
fold acc = 0, x <- xs do
add( a = acc, b = x )
end;
并行执行
[编辑]Cuneiform
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
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
,它对其字person
预加"Hello "
。这个out
。应用greet
,绑定实际person
"world"
,产生记录<out = "Hello world">
。out
,"Hello world"
。
def samtoolsSort( bam : File ) -> <sorted : File>
in Bash *{
sorted=sorted.bam
samtools sort -m 2G $bam -o $sorted
}*
samtoolsSort
。它调
发行历史
[编辑]实现语言 | 发布 |
|||
---|---|---|---|---|
1.0.0 | 2014 |
Java | Apache Hadoop | Bash, Common Lisp, GNU Octave, Perl, Python, R, Scala |
2.0.x | 2015 |
Java | HTCondor, Apache Hadoop | Bash, BeanShell, Common Lisp, MATLAB, GNU Octave, Perl, Python, R, Scala |
2.2.x | 2016 |
Erlang | HTCondor, Apache Hadoop | Bash, Perl, Python, R |
3.0.x | 2018 |
Erlang | Bash, Erlang, Java, MATLAB, GNU Octave, Perl, Python, R, Racket |
Cuneiform
版本 1
[编辑]~
target
关键apply
task
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
[编辑]Cuneiformfalse
,true
。递归
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
[编辑]Cuneiform
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;
引用
[编辑]- ^ Release 3.0.5. 2022
年 5月 27日 [2023年 3月 19日 ]. - ^
存 档副本 . [2021-03-03]. (原始 内容 存 档于2021-03-18). - ^ Brandt, Jörgen; Bux, Marc N.; Leser, Ulf. Cuneiform: A functional language for large scale scientific data analysis (PDF). Proceedings of the Workshops of the EDBT/ICDT. 2015, 1330: 17–26 [2021-03-03]. (
原始 内容 (PDF)存 档于2020-02-17). - ^ Scalable Multi-Language Data Analysis on Beam: The Cuneiform Experience by Jörgen Brandt. Erlang Central. [28 October 2016]. (
原始 内容 存 档于2 October 2016). - ^ Bux, Marc; Brandt, Jörgen; Lipka, Carsten; Hakimzadeh, Kamal; Dowling, Jim; Leser, Ulf. SAASFEE: scalable scientific workflow execution engine (PDF). Proceedings of the VLDB Endowment. 2015, 8 (12): 1892–1895 [2021-03-03]. doi:10.14778/2824032.2824094. (
原始 内容 (PDF)存 档于2020-11-25). - ^ 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. 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). 2015 [2021-03-03]. (
原始 内容 (PDF)存 档于2018-10-01). - ^ Scalable Multi-Language Data Analysis on Beam: The Cuneiform Experience. Erlang-factory.com. [28 October 2016]. (
原始 内容 存 档于2020-07-12). - ^ Kelly, Peter M.; Coddington, Paul D.; Wendelborn, Andrew L. Lambda calculus as a workflow model. Concurrency and Computation: Practice and Experience. 2009, 21 (16): 1999–2017. doi:10.1002/cpe.1448.
Barseghian, Derik; Altintas, Ilkay; Jones, Matthew B.; Crawl, Daniel; Potter, Nathan; Gallagher, James; Cornillon, Peter; Schildhauer, Mark; Borer, Elizabeth T.; Seabloom, Eric W. Workflows and extensions to the Kepler scientific workflow system to support environmental sensor data access and analysis (PDF). Ecological Informatics. 2010, 5 (1): 42–50 [2021-03-03]. doi:10.1016/j.ecoinf.2009.08.008. (
原始 内容 (PDF)存 档于2022-02-25). - ^ Di Tommaso, Paolo; Chatzou, Maria; Floden, Evan W; Barja, Pablo Prieto; Palumbo, Emilio; Notredame, Cedric. Nextflow enables reproducible computational workflows. Nature Biotechnology. 2017, 35 (4): 316–319. PMID 28398311. doi:10.1038/nbt.3820.
- ^ A Functional Workflow Language Implementation in Erlang (PDF). [28 October 2016]. (
原始 内容 (PDF)存 档于2022-02-25). - ^ Brandt, Jörgen; Reisig, Wolfgang; Leser, Ulf. Computation semantics of the functional scientific workflow language Cuneiform. Journal of Functional Programming. 2017, 27. S2CID 6128299. doi:10.1017/S0956796817000119.
|