📄 paper.tex
字号:
\title{Introduction to RSF}\author{Sergey Fomel}\lefthead{Fomel}\righthead{Introduction to RSF}\maketitle\begin{abstract}RSF (from \emph{Regularly Sampled Format}) is an open-source softwarepackage for geophysical data processing and reproducible numericalexperiments. The RSF mission is to provide\begin{enumerate}\item a convenient and powerful environment\item a convenient technology transfer tool\end{enumerate}for researchers working with digital image and data processing. The package isavailable in an open-source form to allow effective collaboration of a widecommunity of developers. The technology developed using the RSF projectmanagement system is transferred in the form of recorded processing histories,which become ``computational recipes'' to be verified, exchanged, and modifiedby users of the system.\end{abstract}\section{What is RSF?}RSF is an open-source software package for geophysical data processingand reproducible numerical experiments. The four main features of RSFare:\begin{enumerate}\item RSF is a \emph{new} package. It started in 2003 and wasdeveloped entirely from scratch. Being a new package, it followsmodern software engineering practices such as module encapsulation andtest-driven development. A rapid development of a project of thisscope (more than 300 main programs and more than 3,000 tests) would notbe possible without standing on the shoulders of giants and learningfrom the 30 years of previous experience in open packages such asSEPlib and Seismic Unix. We have borrowed and reimplementedfunctionality and ideas from these packages.\item RSF is a \emph{test-driven} package. Test-driven development isnot only an agile software programming practice but also a way ofbringing scientific foundation to geophysical research that involvesnumerical experiments. Bringing reproducibility and peer review, thebackbone of any real science, to the field of computational geophysicsis the main motivation for RSF development. The package consists oftwo levels: low-level main programs (typically developed in the Cprogramming language and working as data filters) and high-levelprocessing flows (described with the help of the Python programminglanguage) that combine main programs and completely document dataprocessing histories for testing and reproducibility. Experienceshows that high-level programming is easily mastered even by beginningstudents that have no previous programming experience.\item RSF is an \emph{open-source} package. It is distributed underthe standard GPL open-source license, which places no restriction onthe usage and modification of the code. Access to modifying the sourcerepository is not controlled by one organization but shared equallyamong different developers. This enables an open collaboration amongdifferent groups spread all over the world, in the true spirit of theopen source movement.\item RSF uses a \emph{simple, flexible, and universal} data formatthat can handle very large datasets but is not tied specifically toseismic data or data of any other particular kind. This ``regularlysampled'' format is borrowed from the traditional SEPlib and is alsorelated to the DDS format developed by Amoco and BP. A universal dataformat allows us to share general-purpose data processing tools withscientists from other disciplines such as petroleum engineers workingon large-scale reservoir simulations.\end{enumerate}\section{What is in RSF?}RSF consists of\begin{enumerate}\item A collection of main programs. Most programs act as filters on input data and can be chained in a Unix pipeline. For example:\begin{verbatim}< data.rsf sfwindow n1=100 | sfbandpass fhi=60 > data2.rsf\end{verbatim}This approach follows the Unix philosophy, as formulated by Doug McIlroy,the inventor of Unix pipes \cite[]{salus}:\begin{enumerate}\item Write programs that do one thing and do it well. \item Write programs to work together. \item Write programs to handle text streams, because that is a universal interface.\end{enumerate}Running a command (such as \texttt{sfwindow}) without parameters or thenecessary input and output files shows a brief documentation, explaining theprogram purpose and parameters. Alternatively, brief documentation isprovided by \texttt{sfdoc} program. Main program documentation in HTML formatis available on the web at \\ \url{http://egl.beg.utexas.edu/RSF/}.RSF uses \emph{Regularly Sampled Format} for data files, which is similarto the format used in the SEPlib library developed at the Stanford ExplorationProject (SEP). The file format describes regularly sampled hypercubes. Up to 9dimensions are supported. In accordance with the Unix philosophy, each RSFfile (such as \texttt{data.rsf}) is a simple readable text. It contains apointer (\texttt{in=} parameter) to the location of the binary data. RSF provides programs for conversion to and from other popular formats such asSEG-Y and SU. RSF currently adopts Vplot file format, also developed at SEP,for generated graphics files.\item An API (application programmer's interface) for programmers writing their own software to manipulate RSF files. The main software language of the RSF package is C. Interfaces to other languages (C++, Fortran-77, Fortran-90, Python, Matlab) are also provided. \item A project management system. The system uses and extends \texttt{SCons}, an open-source software construction package\footnote{\url{http://www.scons.org/}}, to document and maintain data processing flows. Documented projects become computational recipes that can be easily exchanged among RSF users. \item A collection of reproducible documents, organized in living books. Each reproducible book contains a collection of RSF recipes (\texttt{SConstruct} files) used to generate book figures. The recipes cover a variety of data processing and imaging tasks described in the books. Figures and recipes serve dual purpose with respect to RSF maintenance. They provide demos for introducing new users to the functionality of the package and regression tests for assuring the system stability under change.\end{enumerate}Follow the links at the end of this paper for additional documentation.\section{Copyright notice}The RSF package is released in an open-source form under the standard GNU GPLlicense. In simple words, there are no restrictions on the use of the software(including copying, modifying, selling, etc.) However, there are restrictionson the software redistribution intended to prevent the package from loosingits open-source status. Users are encourages to submit their modificationsback to the original distribution to the benefit of the whole user community.\section{Alternatives} In the present form, the RSF package, while being completely writtenfrom scratch, borrows ideas from the design of SEPlib, a publiclyavailable software package, maintained by Bob Clapp at the StanfordExploration Project\cite[]{Claerbout.sep.70.413,Dellinger.sep.73.461,Nichols.sep.82.257,Biondi.sep.92.343,Clapp.sep.102.bob1}\footnote{SEPlib is available at \url{http://sepwww.stanford.edu/software/seplib/}.}.Generations of SEP students and researchers contributed toSEPlib. Most important contributions came from Rob Clayton, JonClaerbout, Dave Hale, Stew Levin, Rick Ottolini, Joe Dellinger, SteveCole, Dave Nichols, Martin Karrenbach, Biondo Biondi, and Bob Clapp.RSF also borrows ideas from Seismic Unix (SU), a package maintained by JohnStockwell at the Center for Wave Phenomenon at the Colorado School of Mines\cite[]{TLE16-07-10451049,su}\footnote{SU is available at \url{http://timna.mines.edu/cwpcodes/}.}. Main contributors to SUincluded Einar Kjartansson, Shuki Ronen, Jack Cohen, Chris Liner, Dave Hale,and John Stockwell.Another option for a seismic processing system is Free USP. USP is aprocessing package originally developed by Amoco and released by BP\footnote{Free USP is available at \url{http://www.freeusp.org/}.}. Another package, DDS (Data DictionarySystem) is also released by BP\footnote{DDS is available at \url{http://www.freeusp.org/DDS/}}. The DDS design is closer to RSF.None of these alternative packages can be qualified as free softwareaccording to the\href{http://www.fsf.org/philosophy/free-sw.html}{Free Software Foundation} or as open-source software according to the\href{http://www.opensource.org/docs/definition.php}{Open Source Initiative}. However, they are available for free in the source formunder certain conditions. The RSF package is both free andopen-source.\section{Other documents}\begin{itemize}\item \href{http://egl.beg.utexas.edu/RSF/book/rsf/rsf/install_html/}{Installation instructions}\item \href{http://egl.beg.utexas.edu/RSF/}{Self-documentation reference for RSF programs}\item A \href{http://egl.beg.utexas.edu/RSF/book/rsf/rsf/prog_html/}{guide to RSF programs}\item A \href{http://egl.beg.utexas.edu/RSF/book/rsf/rsf/format_html/}{guide to RSF file format}\item A \href{http://egl.beg.utexas.edu/RSF/book/rsf/rsf/api_html/}{guide to RSF programming interface}\item A \href{http://egl.beg.utexas.edu/RSF/book/rsf/rsf/demo_html/}{guide to programming with RSF}\item A \href{http://egl.beg.utexas.edu/RSF/book/rsf/rsf/tour_html/}{tour of RSF software}\item A \href{http://egl.beg.utexas.edu/RSF/book/rsf/scons/paper_html/}{guide to SCons interface for reproducible computations}\end{itemize}\bibliographystyle{seg}\bibliography{intro,SEG,SEP2}%\end{document}%%% Local Variables: %%% mode: latex%%% TeX-master: t%%% TeX-master: t%%% End:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -