Jrdseed: rdseed Ported to Java
The rdseed software utility is one piece of software that is on the lips of just about every person who has visited IRIS DMC and made use of its SEED data facilities. The rdseed tool has, for more than a decade, provided faithful service to its users in allowing them to examine the contents of SEED files, subset SEED data files by station and time, produce human-readable response information, and convert to other well-known formats such as SAC.
Originally compiled to run on Sun Solaris only, conversions were introduced to allow builds for the Linux and Mac OS X machines, expanding the number of platforms that could make use of rdseed’s capabilities. However, there are many in the community using Windows, and effective ports of rdseed to that platform have never been in the mainstream. Also, the code base for rdseed, which had gone through many release iterations in the last 18 years, had begun to show its age, having become progressively more difficult to work with as new features or corrections were needed. rdseed really needed a complete makeover through a considerable job of refactoring.
A couple of years ago, IRIS DMC started toying with the idea of making a new rdseed written in Java. Already in progress was an API for processing SEED data, and what was needed was an interface to use that technology which behaved in the same fashion as the legacy rdseed code. rdseed as a tool has served users faithfully, so we saw no immediate need to change how the interface operated. Indeed, not changing the usage would help to garner more interest in the new utility, since it would be so familiar.
The project was coined Jrdseed, owing to its use of the Java programming language. The benefits of going with Java are twofold. First, it’s a powerful object oriented language with a wide variety of programming tools at the developer’s fingertips that result in robust software with rich features. Secondly, code built in Java can run on any platform that has a Java Runtime Engine (JRE) installed on its machine. The JRE is an emulator that converts generic ‘bytecode’ to the native machine language that the code is running on. In this way, we can support all major computing platforms with a single build of code. This includes Windows users, which introduces a whole new set of users to the functionality of the legacy rdseed package.
To see this project reach a sufficient state of completion, we solicited the services of Instrumental Software Technologies, Inc. (http://www.isti.com) to carry out the development of the Java application, using some code provided by IRIS to spearhead the SEED engine development. By this summer, working releases were being tested and evaluated, and an initial release went out to the public for evaluation. As of the time of writing, a final evaluation version is hitting the IRIS DMC website, and we hope that the users of this utility will find the experience much the same as what they had experienced before.
Like the old rdseed, the user interface is command-line driven, with a series of fill-in-the-blanks prompts where the user enters information such as input file name, output data type, time window, and so forth. Jrdseed has held onto the same look and feel of its predecessor. To learn the functionality of Jrdseed, you only need to reference the rdseed online manual, keeping in mind that there are a few exceptions to the current capabilities of Jrdseed versus rdseed.
First, this is entirely new code. Very little, if any, code has been ported from the original rdseed. Owing to the object-oriented nature of Java and its special memory consumptive habits, performance issues and scalability limits for very large files have been recognized. To get the best performance out of Jrdseed, try to keep your file sizes to no more than a few tens of megabytes. As users continue to evaluate Jrdseed, we will find strategies to address performance issues.
As for the command interface, some features are not being used in the current release:
- The volume number (’-v’) option: SEED files with multiple volume numbers are no longer used.
- The start/stop times (’-t’) output will not have the logical record sequence number printed.
- The list contents of each record in the volume (’-l’) option is not supported.
- SAC ASCII output is not in SAC format, but is a currently a rudimentary delimited ASCII output.
- SEGY output is not supported.
Installation and Usage
You can download Jrdseed from:
For those not familiar with the ‘rdseed’ interface, please refer to the rdseed online manual at:
The rdseed manual will tell you how to use Jrdseed, aside from the feature differences mentioned above. The other critical difference is how you start Jrdseed. Since it uses Java, you have to use the Java launcher on the .jar file you downloaded:
java -jar JrdseedVer0.08.jar
A sample session with Jrdseed looks like:
myserver% java -jar JrdseedVer0.08.jar << Java SEED Reader, Release 0.08 >> Input File (/dev/nrst0) or ‘Quit’ to Exit: waveforms_99.seed Output File (stdout) : Volume # [(1)-N] : Options [acCsSpRtde] : d Station List (ALL) : Channel List (ALL) : BH?,LH? Network List (ALL) : Loc Ids (ALL [”—” for spaces]) : Output Format [(1=SAC), 2=AH, 3=CSS, 4=mini seed, 5=seed, 6=sac ascii, 7=SEGY] : 4 Select Data Type [(E=Everything), D=Data of Undetermined State, R=Raw waveform Data, Q=QC’d data] : E Start Time(s) YYYY,DDD,HH:MM:SS.FFFF : 1999,027,06:24:59.0000 End Time(s) YYYY,DDD,HH:MM:SS.FFFF : Extract Responses [Y/(N)] : N Input File (/dev/nrst0) or ‘Quit’ to Exit: q
Jrdseed is currently a public evaluation release, having undergone internal testing and evaluation. There are no guarantees that Jrdseed is a suitable replacement for rdseed or should be put into production use. Please evaluate the tool to determine its suitability for your purposes. Development and support will continue for this tool as time and resources allow.
For questions and comments regarding Jrdseed, please write to firstname.lastname@example.org
by Rob Casey (IRIS Data Management Center)