Code Monkey home page Code Monkey logo

stationxml-seed-converter's Introduction

stationxml-seed-converter

Please refer to the stationxml-seed-converter's user guide for complete documentation.

Downloading releases

Releases of the stationxml-seed-converter can be downloaded from the project's release page:

https://github.com/iris-edu/stationxml-seed-converter/releases

The compiled .jar may be used immediately and is compatible with Java 8 and Java 11.

Basic Usage

java -jar /PATH/TO/stationxml-seed-converter-2.1.0.jar /PATH/TO/METADATA/File.extention

java -jar PATH/TO/stationxml-seed-converter-2.1.0.jar --input /PATH/TO/StnXML_file.xml --output /PATH/TO/StnXML_file.dataless

java -jar /PATH/TO/stationxml-seed-converter-2.1.0.jar --input /PATH/TO/Dataless_file.dataless --output /PATH/TO/Dataless_file.xml

java -jar /PATH/TO/stationxml-seed-converter-2.1.0.jar --input /PATH/TO/METADATA/DIR --output /PATH/TO/METADATA/NEWDIR

System Language Requirments

The stationxml-seed-converted is built in an English language environment and assumes users have similar settings. If a user's environment is not C locale please instantiate a C locale environment using export LC_ALL="C" for bash, or setenv LC_ALL C for tcsh/csh.

stationxml-seed-converter's People

Contributors

dependabot[bot] avatar jamesfholland avatar rcasey-earthscope avatar timronan avatar yazan-iris avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

stationxml-seed-converter's Issues

converter usage documentation

Update the usage documentation stored inside the converter jar.
It should only have documentation for the --input and --output arguments.

Usage:
java -jar java -jar stationxml-converter.jar [options...] arguments...
	  [inputFile ...], usage = "input file"
	-h, aliases = "--help", usage = "print this message"
	-V, aliases = "--version", usage = "Print version number and exit."
	-s, aliases = "--seed", usage = "Seed format
	-v, aliases = "--verbose", usage = "Print out verbose information during conversation."
	-x, aliases = "--xml", usage = "XML format"
	-p, aliases = "--prettyprint", usage = "Only when output is xml."
	-se, aliases = "--sender", metaVar = "<path>", usage = "Originating organization, or FDSNStationXML <Sender> element."
	-so, aliases = "--source", metaVar = "<path>", usage = "Originating organization, or FDSNStationXML <Source> element."
	-A, aliases = "--useragent", usage = "Originating organization, or FDSNStationXML <Source> element."
	-i, aliases = "--input", usage = "Input as a file or URL - for System.in."
	-o, aliases = "--output" }, metaVar = "<file>", usage = "use given output file"

File does not convert - likely a number format issue

The attached file gives:
acqdb::ketchum:XMLIMPORT>java -jar ~vdl/bin/stationxml-seed-converter-2.0.5-SNAPSHOT.jar --input ~metadata/XMLIMPORT/ROIPH5.xml --output ROIPH5.dataless
May 29, 2019 8:00:57 PM edu.iris.dmc.station.Application exitWithError
SEVERE:
Error: null

Error: null

An older version (2.0.2) had this detail about this same file:

java.lang.NumberFormatException: Couldn't format number!-0.0 +-0.00000E+00 [12 13 ]
at edu.iris.dmc.io.SeedStringBuilder.append(SeedStringBuilder.java:263)
at edu.iris.dmc.seed.control.station.B053.toSeedString(B053.java:83)
at edu.iris.dmc.seed.AbstractBlockette.getLength(AbstractBlockette.java:74)
at edu.iris.dmc.seed.Volume.add(Volume.java:166)
at edu.iris.dmc.station.converter.XmlToSeedDocumentConverter.convert(XmlToSeedDocumentConverter.java:208)
at edu.iris.dmc.station.converter.XmlToSeedDocumentConverter.convert(XmlToSeedDocumentConverter.java:48)
at edu.iris.dmc.station.converter.XmlToSeedFileConverter.convert(XmlToSeedFileConverter.java:41)
at edu.iris.dmc.station.converter.XmlToSeedFileConverter.convert(XmlToSeedFileConverter.java:29)
at edu.iris.dmc.station.converter.XmlToSeedFileConverter.convert(XmlToSeedFileConverter.java:19)
at edu.iris.dmc.station.Application.convert(Application.java:106)
at edu.iris.dmc.station.Application.run(Application.java:62)
at edu.iris.dmc.station.Application.main(Application.java:18)

Error: Couldn't format number!-0.0 +-0.00000E+00 [12 13 ]

I do not see a number formatted like -0.0 or +0.00 in the file.

ROIPH5.txt

Running without arguments gives unhelpful error messgage

using version 2.0.7:

% java -jar stationxml-seed-converter-2.0.7-SNAPSHOT.jar
Nov 20, 2019 10:33:26 AM edu.iris.dmc.station.Application exitWithError
SEVERE: 
Error: Invalid number of arguments

Previous versions, tested with v2.0.6, return the help/usage message.

We should either add something along the lines of "Try -h to see usage" or print the usage message itself as it used to do.

Metadata without gain information is defaulting to 0-value sensitivity

Examples of this show up in metadata such as from VM* stations where the entire response data is a polynomial response of the form 0+(1E-1)x. With no sensitivity information the converter defaults to specifying a sensitivity (gain stage 0) where the sensitivity is specified as 0.

We believe it would be more appropriate to default to 1.0 in these cases based on how gain is defined (gain of 0 would imply an empty signal).

Converting from dataless to StationXML shifts epoch times to local from UTC

Converting the attached dataless SEED volume:
ARCES_DATALESS.SEED.gz

results in a shift of epoch times from UTC to local time zone.

First channel epoch time from rdseed -s -f ARCES_DATALESS.SEED

...
B052F22     Start date:                            1987,242
B052F23     End date:                              1999,256,23:59
...

Convert to StationXML using:
$ java -jar stationxml-converter-1.0.10.jar --xml ARCES_DATALESS.SEED -so 'source' -o out.xml

Same channel epoch time is:

<Channel locationCode="00" code="SHZ" startDate="1987-08-30T07:00:00.000"
                endDate="1999-09-14T06:59:00.000">

My computers local time zone is UTC-7, and both times have been shifted by 7 hours.

Conversion from xml to dataless drops all station epochs, except earliest

Versions: 2.0.9 and 2.0.10
All files from my test are attached.

Execute

java -jar stationxml-seed-converter-2.0.10-SNAPSHOT.jar --input IU.NWAO.xml --output IU.NWAO.dataless
rdseed -s -f IU.NWAO.dataless > nwao.txt
less nwao.txt 
less IU.NWAO.xml

Note that the originating IU.NWAO.xml contains BH1 metadata:

<Channel code="BH1" locationCode="00" startDate="2018-09-15T00:00:00" restrictedStatus="open">
     <Latitude>-32.9277</Latitude>
     <Longitude>117.239</Longitude>
     <Elevation>278.1</Elevation>
     <Depth>102</Depth>
     <Azimuth>72</Azimuth>
     <Dip>0</Dip>

nwao.txt and IU.NWAO.dataless do not contain BH1 metadata.
droppingAllEpochs.zip

0 is being added to Decimal Seconds when Converting from StatinoXML to Dataless

A 0 is being added to the tenths place in station level endtime decimal seconds when converting from stationxml to dataless seed. This is a likely associated with keeping a correct Bytes count but need to be investigated.

StationXML Representation of Station LA03 EndTime:
2022-03-02T13:35:33.205000Z

Dataless Representation of Station LA03 EndTime:
LA03: 2019,181,01:47:40.0000~2022,061,13:35:33.0205

Master branch has quit building

The latest build is erroring. I am not able to produce a jar file. This is as of 2019-12-20.

[INFO] Results:
[INFO] 
[ERROR] Errors: 
[ERROR]   XmlToSeedFileConverterTest.commentConversion » StackOverflow
[ERROR]   XmlToSeedFileConverterTest.t1 » StackOverflow
[ERROR]   XmlToSeedFileConverterTest.t2 » StackOverflow
[ERROR]   XmlToSeedFileConverterTest.t3 » StackOverflow
[ERROR]   XmlToSeedFileConverterTest.t4 » StackOverflow
[INFO] 
[ERROR] Tests run: 24, Failures: 0, Errors: 5, Skipped: 0
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  9.310 s
[INFO] Finished at: 2019-12-20T14:55:27-07:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.1:test (default-test) on project stationxml-seed-converter: There are test failures.
[ERROR] 
[ERROR] Please refer to /home/jholland/dev/stationxml-seed-converter/target/surefire-reports for the individual test results.
[ERROR] Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream.
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

Pole-zero response error terms appear to be removed during conversion

Found an example of this in CU-ANWB ch. BH2 data epoch from 2010-041 to 2018-218, as taken from FDSN. First two poles have real error term 2.191350E-04 and imaginary error term 2.394350E-04. Running a conversion of this to and from dataless seed produces response information where these have been replaced with 0.

XML -> DATALESS sample rate format glitch? (2.1.0)

Hi,

Seems to be a bug/mixup between the E00 and E-00 type formatting in samplerate when converting from stationXML to dataless.

I've tested various datacenters and the problem is consistent, even at IRIS e.g. IU.ANMO

$ java -jar stationxml-seed-converter-2.1.0.jar --input anmo.xml --output anmo.dataless java.lang.NumberFormatException: Couldn't format number, value: 20.0 format: 0.0000E-00 pattern: 0.0000E00 actual: 2.0000e01 [10 9 ] at edu.iris.dmc.io.SeedStringBuilder.append(SeedStringBuilder.java:267) at edu.iris.dmc.seed.control.station.B052.toSeedString(B052.java:303) at edu.iris.dmc.seed.AbstractBlockette.getSize(AbstractBlockette.java:72) at edu.iris.dmc.seed.Volume.add(Volume.java:266) at edu.iris.dmc.station.converter.XmlToSeedDocumentConverter.convert(XmlToSeedDocumentConverter.java:112) at edu.iris.dmc.station.converter.XmlToSeedDocumentConverter.convert(XmlToSeedDocumentConverter.java:48) at edu.iris.dmc.station.converter.XmlToSeedFileConverter.convert(XmlToSeedFileConverter.java:426) at edu.iris.dmc.station.converter.XmlToSeedFileConverter.convert(XmlToSeedFileConverter.java:70) at edu.iris.dmc.station.Application.convert(Application.java:189) at edu.iris.dmc.station.Application.run(Application.java:127) at edu.iris.dmc.station.Application.main(Application.java:70) edu.iris.dmc.station.mapper.MetadataConverterException: java.lang.NumberFormatException: Couldn't format number, value: 20.0 format: 0.0000E-00 pattern: 0.0000E00 actual: 2.0000e01 [10 9 ] at edu.iris.dmc.station.converter.XmlToSeedDocumentConverter.convert(XmlToSeedDocumentConverter.java:329) at edu.iris.dmc.station.converter.XmlToSeedDocumentConverter.convert(XmlToSeedDocumentConverter.java:48) at edu.iris.dmc.station.converter.XmlToSeedFileConverter.convert(XmlToSeedFileConverter.java:426) at edu.iris.dmc.station.converter.XmlToSeedFileConverter.convert(XmlToSeedFileConverter.java:70) at edu.iris.dmc.station.Application.convert(Application.java:189) at edu.iris.dmc.station.Application.run(Application.java:127) at edu.iris.dmc.station.Application.main(Application.java:70) Caused by: java.lang.NumberFormatException: Couldn't format number, value: 20.0 format: 0.0000E-00 pattern: 0.0000E00 actual: 2.0000e01 [10 9 ] at edu.iris.dmc.io.SeedStringBuilder.append(SeedStringBuilder.java:267) at edu.iris.dmc.seed.control.station.B052.toSeedString(B052.java:303) at edu.iris.dmc.seed.AbstractBlockette.getSize(AbstractBlockette.java:72) at edu.iris.dmc.seed.Volume.add(Volume.java:266) at edu.iris.dmc.station.converter.XmlToSeedDocumentConverter.convert(XmlToSeedDocumentConverter.java:112) ... 6 more [2021-10-18 20:01:40] [SEVERE] edu.iris.dmc.station.Application run: edu.iris.dmc.station.Application.exitWithError(Application.java:204) edu.iris.dmc.station.Application.convert(Application.java:194) edu.iris.dmc.station.Application.run(Application.java:127) edu.iris.dmc.station.Application.main(Application.java:70)

Converting station level stationxml a Exception occurs

Sample xml attached as .txt.
stationlevel.txt

Conversion works as expected with version 2.0.10, but fails with later version of the converter.

Error generated:

 java -jar ~/Downloads/stationxml-seed-converter-2.1.0-RC-2.jar --input ~/tmp/validationStage2PZ/stationlevel.xml --output out.seed
[2020-05-06 17:25:53] [SEVERE] edu.iris.dmc.station.Application run: edu.iris.dmc.station.Application.exitWithError(Application.java:191)
edu.iris.dmc.station.Application.convert(Application.java:181)
edu.iris.dmc.station.Application.run(Application.java:123)
edu.iris.dmc.station.Application.main(Application.java:68)

Add support for non-IRIS originating organizations and custom Volume Labels

This is a feature request.
Currently the converter bakes the below quote in to the dataless volumes.

> B010F08     Originating Organization:                                            IRIC DMC
> B010F09     Volume Label:                                              Converted from XML

However, dataless we produce is not from the IRIS DMC and we would like to customize the volume label as well.

I propose that two optional parameters be added to the CLI.

--origin [custom originating organization]
--label [custom volume label]

These would allow overriding of the corresponding fields in the dataless output.
They would be ignored unless converting XML to Dataless.

I am willing to add these if your team is currently busy.

Cannot parse certain dates that look o.k.

The attached statoin XML file throws an error on a line that looks like:
grep 2019-05-29T01:46:06.90491 TXMB01.xml
2019-05-29T01:46:06.90491
Which does not appear to be badly formatted.

acqdb::ketchum:XMLIMPORT>java -jar ~vdl/bin/stationxml-seed-converter-2.0.5-SNAPSHOT.jar --input ~metadata/XMLIMPORT/TXMB01.xml --output TXMB01.dataless
java.time.format.DateTimeParseException: Text '2019-05-29T01:46:06.90491' could not be parsed, unparsed text found at index 23
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1952)
at java.time.format.DateTimeFormatter.parseBest(DateTimeFormatter.java:1897)
at edu.iris.dmc.fdsn.station.model.ZonedDateTimeXmlAdapter.unmarshal(ZonedDateTimeXmlAdapter.java:33)
at edu.iris.dmc.fdsn.station.model.ZonedDateTim
TXMB01.txt
eXmlAdapter.unmarshal(ZonedDateTimeXmlAdapter.java:15)
at com.sun.xml.bind.v2.runtime.reflect.AdaptedAccessor.set(AdaptedAccessor.java:85)
at com.sun.xml.bind.v2.runtime.reflect.TransducedAccessor$CompositeTransducedAccessorImpl.parse(TransducedAccessor.java:239)
at com.sun.xml.bind.v2.runtime.unmarshaller.LeafPropertyLoader.text(LeafPropertyLoader.java:65)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.text(UnmarshallingContext.java:590)
at com.sun.xml.bind.v2.runtime.unmarshaller.SAXConnector.processText(SAXConnector.java:213)
at com.sun.xml.bind.v2.runtime.unmarshaller.SAXConnector.endElement(SAXConnector.java:176)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:609)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1782)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2967)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:842)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:771)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:258)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:229)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:157)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:204)
at edu.iris.dmc.IrisUtil.readXml(IrisUtil.java:43)
at edu.iris.dmc.IrisUtil.readXml(IrisUtil.java:36)
at edu.iris.dmc.station.converter.XmlToSeedFileConverter.convert(XmlToSeedFileConverter.java:407)
at edu.iris.dmc.station.converter.XmlToSeedFileConverter.convert(XmlToSeedFileConverter.java:65)
at edu.iris.dmc.station.Application.convert(Application.java:117)
at edu.iris.dmc.station.Application.run(Application.java:73)
at edu.iris.dmc.station.Application.main(Application.java:24)
May 29, 2019 7:51:44 PM edu.iris.dmc.station.Application exitWithError
SEVERE:

TXMB01.txt

Channel Epoch not converting from xml to seed correctly - various issues

Reproduction

Download ANMO 10 LH1 xml from IRIS fdsnws
https://service.iris.edu/fdsnws/station/1/query?net=IU&sta=ANMO&loc=10&cha=LH1&starttime=1998-08-01T00:00:00&endtime=2001-08-01T00:00:00&level=channel&format=xml&includecomments=true&nodata=404

Review end dates for epochs - I picked just one epoch as an example all are behaving this way.

<Channel code="LH1" endDate="1999-02-08T00:00:00" locationCode="10" restrictedStatus="open" startDate="1999-01-13T00:00:00">
    <DataAvailability>
        <Extent start="1998-10-26T20:44:37" end="2018-08-08T00:00:00"/>
    </DataAvailability>
    <Latitude>34.9459</Latitude>
    <Longitude>-106.457199</Longitude>
    <Elevation>1760.7</Elevation>
    <Depth>89.3</Depth>
    <Azimuth>135</Azimuth>
    <Dip>0</Dip>
    <Type>CONTINUOUS</Type>
    <Type>GEOPHYSICAL</Type>
    <SampleRate>1E00</SampleRate>
    <ClockDrift>0E00</ClockDrift>
    <Sensor>
        <Description>Guralp CMG3-T Seismometer (borehole)</Description>
    </Sensor>
    <Response>
        <InstrumentSensitivity>
            <Value>3.3481E10</Value>
            <Frequency>2E-2</Frequency>
            <InputUnits>
                <Name>M/S</Name>
                <Description>Velocity in Meters Per Second</Description>
            </InputUnits>
            <OutputUnits>
                <Name>COUNTS</Name>
                <Description>Digital Counts</Description>
            </OutputUnits>
        </InstrumentSensitivity>
    </Response>
</Channel>

Convert to seed using
java -jar target/stationxml-converter-1.0.11-SNAPSHOT-jar-with-dependencies.jar --seed -o lh1.seed fdsnws-station_2018-08-08T20_28_50Z.xml

View seed file files using rdseed - I have emboldened incorrect values

B052F04 Channel: LH1
B052F03 Location: 10
B052F05 Subchannel: 0
B052F06 Instrument lookup: 2 Guralp CMG3-T Seismometer (borehole)
B052F07 Comment: (null)
B052F08 Signal units lookup: 1 M/S - Velocity in Meters Per Second
B052F09 Calibration units lookup: 2 UNKNOWN - (null)
B052F10 Latitude: 34.945900
B052F11 Longitude: -106.457199
B052F12 Elevation: 1760.700000
B052F13 Local depth: 89.300000
B052F14 Azimuth: 0.000000
B052F15 Dip: 1.000000
B052F16 Format lookup: 1 !!! ERROR - Format Code Not Found !!! [The output seed is missing blockette 30]
B052F17 Log2 of Data record length: 0
B052F18 Sample rate: 0
B052F19 Clock tolerance: 0
B052F21 Channel flags: ZZZZZZZZZZZZZZZZZ
B052F22 Start date: 1999,013,00:00:00.0000
B052F23 End date: 2018,220,20:30:15.0000 [This date corresponds to the datetime that stationxml-converter performed the conversion.]
B052F24 Update flag:

stationxml-seed-converter needs LC_ALL=C

Hello,

I just figured out that stationxml-seed-converted needs the environment in which it works to be set-up with English numeric output, ie LC_ALL=C.

If this not the case, for example in a French environment, numbers are incorrectly parsed or written and the stationXML to SEED dataless conversion is completely wrong.
All numbers are completely mis-translated (number and exponant).
The resulting response as nothing to do with the original.

This should at least be clearly indicated at the top of the documentation.

In bash, you can overcome this by issuing the following export before using the converter.
export LC_ALL="C"

In tcsh or csh, use the following.
setenv LC_ALL C

Converting from Seed to xml adds system UTC offset to date values

Problem:
Dates are improperly converted from seed to xml. My system time offset from UTC appears to be added to each value.

12:00 becomes 18:00 (on dates that are MDT), 00:00 becomes 07:00 (on MST dates)

Reproduction:
I downloaded this stationxml
http://service.iris.edu/fdsnws/station/1/query?net=IU&sta=COLA&loc=*&cha=*&starttime=2009-07-09T00:00:00&endtime=2599-12-31T23:59:59&level=station&format=xml&nodata=404

I used the jar file from the release on github.

Steps and output:

Initial XML snippet
<Station code="COLA" startDate="2009-07-09T00:00:00" endDate="2599-12-31T23:59:59"

After Conversion to Seed (Still Correct)
java -jar ~/Downloads/stationxml-converter-1.0.10.jar --seed -o cola.seed cola.xml
B050F13 Starting date: 2009,190,00:00:00.0000
B050F14 Ending date: 2599,365,23:59:59.0000

Reconvert to XML (Dates are now incorrect)
java -jar ~/Downloads/stationxml-converter-1.0.10.jar --xml --source='IRIS-DMC' -o cola_1.xml cola.seed
<Station code="COLA" startDate="2009-07-09T06:00:00.000" endDate="2600-01-01T06:59:59.000"

Converter crashing on large datasets (full CI stationXML)

Input is the file produced from the following command:

curl -L -o CI.xml "https://service.iris.edu/fdsnws/station/1/query?net=CI&level=response&format=xml&includecomments=true&nodata=404"

It is a roughly 1.3 GB file, the largest of those for the networks we currently place under analysis.

When we run the converter like so (we've tried with higher than 10g max heap sizes as well):

java -jar -Xmx10g [converter].jar --input CI.xml --output CI.dataless

we get the following error:

java.lang.ArrayIndexOutOfBoundsException
	at java.lang.System.arraycopy(Native Method)
	at edu.iris.dmc.seed.record.VolumeRecord.getBytes(VolumeRecord.java:54)
	at edu.iris.dmc.seed.io.SeedBufferedOutputStream.write(SeedBufferedOutputStream.java:22)
	at edu.iris.dmc.seed.writer.SeedFileWriter.write(SeedFileWriter.java:42)
	at edu.iris.dmc.seed.writer.SeedFileWriter.write(SeedFileWriter.java:36)
	at edu.iris.dmc.station.converter.XmlToSeedFileConverter.convert(XmlToSeedFileConverter.java:45)
	at edu.iris.dmc.station.converter.XmlToSeedFileConverter.convert(XmlToSeedFileConverter.java:29)
	at edu.iris.dmc.station.converter.XmlToSeedFileConverter.convert(XmlToSeedFileConverter.java:19)
	at edu.iris.dmc.station.Application.convert(Application.java:106)
	at edu.iris.dmc.station.Application.run(Application.java:62)
	at edu.iris.dmc.station.Application.main(Application.java:18)

Error: null

We're not sure if the reason for this is that the file is large or if there's another, subtler issue at play that is only obvious because the file size is so large.

converter from XML to dataless for two stations yields Blk 11 indices out of order

A recent FetchData request with this pattern:

2H CONZ -- BHZ 2019-04-07T15:45:08Z 2019-04-07T16:15:08Z
AI BELA 04 BHZ 2019-04-07T15:45:08Z 2019-04-07T16:15:08Z
AI BELA -- BHZ 2019-04-07T15:45:08Z 2019-04-07T16:15:08Z

Resulted in a Blockette 11 with two entries, record index 4, followed by record index 3. The order of these indices should be ascending, not decending.

    type 011 len 0032 : 002BELA 000004CONZ 000003

Test resources are hard coded to incorrect directory

When running mvn test or mvn package I get the below error.
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-test) on project stationxml-seed-converter: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test failed: The forked VM terminated without saying properly goodbye. VM crash or System.exit called ? -> [Help 1]

Investigation shows that references to file paths are hardcoded to "/Users/Suleiman/".

See:
ApplicationTest.java
FileTest.java
Copier.java
Concerter.java
FileRunner.java

Pole numbers are incorrectly indexed when converting from SEED to XML

Tested by converting the IRIS produced IU.dataless (and both ASL and SIS produced dataless). I was using the 2.0.3 snapshot.

The indexing appears to persist after zeros are written. See below. (I have stripped out irrelevant portions)

<Zero number="0">
...
</Zero>
<Zero number="1">
...
</Zero>
<Pole number="2">
...
</Pole>
<Pole number="3">
</Pole>

Expected behavior:

<Zero number="0">
...
</Zero>
<Zero number="1">
...
</Zero>
<Pole number="0">
...
</Pole>
<Pole number="1">
</Pole>

Unable to resolve dependency: oscache-mod2

Environment:
Apache Maven 3.5.2
Java version: OpenJDK 1.8.0_171, vendor: Oracle Corporation

Reproduction
Clone project
Run: mvn package

[INFO] Scanning for projects...
[WARNING]
[WARNING] Some problems were encountered while building the effective model for edu.iris:stationxml-converter:jar:1.0.10
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-compiler-plugin is missing. @ line 20, column 12
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-source-plugin is missing. @ line 40, column 12
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-eclipse-plugin is missing. @ line 29, column 12
[WARNING]
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING]
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING]
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building station-seed-converter 1.0.10
[INFO] ------------------------------------------------------------------------
Downloading from central: https://repo.maven.apache.org/maven2/opensymphony/oscache-mod2/2.1/oscache-mod2-2.1.pom
[WARNING] The POM for opensymphony:oscache-mod2:jar:2.1 is missing, no dependency information available
Downloading from central: https://repo.maven.apache.org/maven2/opensymphony/oscache-mod2/2.1/oscache-mod2-2.1.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.775 s
[INFO] Finished at: 2018-08-03T10:23:04-06:00
[INFO] Final Memory: 13M/295M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project stationxml-converter: Could not resolve dependencies for project edu.iris:stationxml-converter:jar:1.0.10: Could not find artifact opensymphony:oscache-mod2:jar:2.1 in central (https://repo.maven.apache.org/maven2) -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException

Update StationXML Prolog when converting from dataless to StationXML

The stationxml-seed-converter generates stationXML with the prolog <?xml version="1.0" encoding="UTF-8" standalone="yes"?> when converting from dataless seed to stationXML. This prolog is not accepted when the .XML document is being parsed into the stationXML-Loader and leads to the error “Content is not allowed in prolog”. This error is likely occurring because of an encoding mismatch or being there is additional unrecognized content in the stationXML prolog reference .

It seems as though the standalone="yes" directive may be the erroneous content in the prolog.

The attribute is only relevant when a DTD is used. (The attribute is irrelevant when using a schema instead of a

Stationxml is schema based.

We should consider the stationXML-converter to output stationXML with the prolog <?xml version="1.0" encoding="ISO-8859-1"?>, matching the prologs of the stationXML in the current database.

Converter should not require local locale settings

The converter requires being executed in a locale of C (or en_US.UTF-8 seems to work also):
https://github.com/iris-edu/stationxml-seed-converter#system-language-requirments

This effects the conversion between two formats, the encodings of which the user has no control over. Since the formats are fixed to specific encoding and number usage it makes sense to treat them as such in the converter, whatever the caller's locale is should not matter.

P.S. For this converter, where a users locale makes sense would be on input, like command line parameters. But I don't see any that take numbers and text should be assumed to be UTF-8.

Converter appears to be stripping out or mixing up response data components

One example of this is the case attached. Got data from a single channel epoch via FDSN MDA http query. ("ANMO-one-epoch.xml") Converted to dataless and then back into station XML. Station XML was compared via diff to be missing some unit descriptions in the response. This appears to have also been the case for the intermediate dataless file (ANMO-one-epoch.dataless) based on running it through rdseed. The second XML file ("ANMO-one-epoch.converted.xml") lacks inputunits and outputunits field for its response.

We have done similar tests with this kind of circular conversion using obspy to test equality of generated fields. We find that dataless components that match inventory object fields in obspy are correct through multiple conversions (i.e, from dataless to xml back to dataless). We find in comparing XML files (since these can be compared using a more simple diff) that there are several cases in larger files where unit fields still exist but have been populated with the wrong components (see the case for this same epoch -- ANMO LWD from 2002-11-19 to 2008-06-30 in the FDSN-generated "ANMO.one.xml" vs. the cyclically converted "ANMO.two.xml" (one round of XML to seed back to XML) and "ANMO.three.xml" (a second round of this conversion), which has some fields that should be from degrees (inputunits) to degrees (outputunits) replaced with Teslas (input) to digital counts (output). I was informed there may also be cases where an entire response is pointed to by the wrong channel (i.e., expecting a pole-zero response but finding a polynomial response or vice-versa), though I do not know of a specific channel/epoch where this has occurred; looking at it from a diff suggests no response polynomial or pole-zero is lost or duplicated outside of the unit dictionaries.

We do not notice any inconsistencies with dates or other common metadata parameters like elevation, orientation, etc. All issues appear to be related to responses.

ANMO dataless error examples.zip

Station response data missing in converted dataless?

The dataless file here originates from the IRIS FTP (don't know precise date as it's a local copy but probably dates to late November). We have done a circular conversion from dataless to XML and back to dataless (i.e., running
java -jar stationxml~.jar --input IU.datalesss --output IU.temp.XML and then
java -jar stationxml~.jar --input IU.temp.XML --output IU.converted.dataless

We then run rdseed in the following way:

<< IRIS SEED Reader, Release 5.0
Input  File (/dev/nrst0) or 'Quit' to Exit: IU.converted.dataless
Output File (stdout)	: 
Volume #  [(1)-N]	: 
Options [acCsSpRtde]	: R
Station List (ALL)	: AAE
Channel List (ALL)	: 
Network List (ALL)	: 
Loc Ids (ALL ["--" for spaces])	: 
Input  File (/dev/nrst0) or 'Quit' to Exit: quit

We compare this to running the same options on IU.dataless, inside a different folder

<< IRIS SEED Reader, Release 5.0
Input  File (/dev/nrst0) or 'Quit' to Exit: IU.dataless
Output File (stdout)	: 
Volume #  [(1)-N]	: 
Options [acCsSpRtde]	: R
Station List (ALL)	: AAE
Channel List (ALL)	: 
Network List (ALL)	: 
Loc Ids (ALL ["--" for spaces])	: 
Input  File (/dev/nrst0) or 'Quit' to Exit: quit

Then we run ls RESP* inside each folder.
For the path where IU.dataless exists (ls AAE-orig\RESP*) we get the following:

AAE-orig/RESP.IU.AAE..BHE  AAE-orig/RESP.IU.AAE..EHN  AAE-orig/RESP.IU.AAE..LHZ  AAE-orig/RESP.IU.AAE..VCI
AAE-orig/RESP.IU.AAE..BHN  AAE-orig/RESP.IU.AAE..EHZ  AAE-orig/RESP.IU.AAE..SHE  AAE-orig/RESP.IU.AAE..VHE
AAE-orig/RESP.IU.AAE..BHZ  AAE-orig/RESP.IU.AAE..LHE  AAE-orig/RESP.IU.AAE..SHN  AAE-orig/RESP.IU.AAE..VHN
AAE-orig/RESP.IU.AAE..EHE  AAE-orig/RESP.IU.AAE..LHN  AAE-orig/RESP.IU.AAE..SHZ  AAE-orig/RESP.IU.AAE..VHZ

Which is what we expect. However, running ls AAE-conv\RESP* gives us no result.

We have attached both dataless files used in this comparison to hopefully make this easier to replicate.
dataless-archive.zip

Not mapping vertical channels to an <Azimuth> element breaks some loaders

The recent removal of Azimuth tags if the channel is vertical is going to break a lot of things.

It has already broken loading of StationXML converted from your tool into some databases which do not allow Azimuth to be null. People are not going to change their schema's to accommodate Station XML changes. Please reverse course on having azimuth being null for vertical sensors in this converter....otherwise we just have to add it in by hand to keep using your tool and that is going to get old fast.

Automatic conversion between case insensitive and SI units

The stationXML converter must be more sophisticated about unit conversion. stationxml-seed-converter-2.0.3-SNAPSHOT directly converters unit names across file formats, but this often leads to inconsistencies between unit names in stationXML files and the list of units outlines in by the Unit name overview for IRIS StationXML validator. Furthermore, the dataless seed blockette [34] requires all units to be upper case while the stationXML-validator checks for units following SI casing. Plural units are also very common, which do not follow SI conventions.

For conversions between dataless and stationXML, a conversion dictionary is to be implemented. Dataless units that case insensitively match a JSON value in a published dictionary will automatically be converted to the corresponding key. Units being converted from stationXML to dateless will not use the dictionary, rather the unit will be directly converted except that the casing will become uppercase.

Converting does nothing and provides no indication of success or error with input as URL

Trying to convert from an fdsnws-station service call:

% java -jar stationxml-seed-converter-2.0.6-SNAPSHOT.jar \
  --input 'http://service.iris.edu/fdsnws/station/1/query?network=AI&station=BELA&location=--&channel=BHZ&level=response' \
  --output AI_BELA.dataless
%

Results in nothing, no further output to the console, no output file.

Downloading the XML to a file and running the converter with the file produces a dataless SEED file.

how to use stationxml-seed-converter?

Hi,

I am new to Java and new to GItHub.
To convert xml station file to datalessSEED I downloaded stationxml-seed-converter-2.1.0.tar.gz from here.

In the User’s Guide to the IRIS stationxml-seed-converter, I found an example
% java -jar PATH/TO/stationxml-seed-converter-2.1.0.jar --input /PATH/TO/StnXML_file.xml --output /PATH/TO/StnXML_file.dataless

but in the expanded files I cannot find a file named stationxml-seed-converter-2.1.0.jar.

Could you tell me how to run the converter?
After untar the *.tar.gz file I obtain a directory of long directory name stationxml-seed-converter-stationxml-seed-converter-2.1.0.
I cannot find stationxml-seed-converter-2.1.0.jar in the directory.

I am using MacOS 10.14.6

Build failing for 2.1.1

When I attempt to compile and package the jar, it fails to find one of the dependencies: edu.iris.dmc:fdsn-stationxml-model:jar:1.6.1.

Downloading from ossrh: https://oss.sonatype.org/content/repositories/releases/edu/iris/dmc/fdsn-stationxml-model/1.6.1/fdsn-stationxml-model-1.6.1.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  3.695 s
[INFO] Finished at: 2022-04-06T21:44:26Z
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project stationxml-seed-converter: Could not resolve dependencies for project edu.iris.dmc:stationxml-seed-converter:jar:2.1.1: Could not find artifact edu.iris.dmc:fdsn-stationxml-model:jar:1.6.1 in ossrh (https://oss.sonatype.org/content/repositories/releases) -> [Help 1]

I don't see v1.6.1 published on https://oss.sonatype.org/content/repositories/releases/edu/iris/dmc/fdsn-stationxml-model/

Similarly, stationxml-validator is failing to build because it can't find stationxml-seed-converter:jar:2.1.1.

Thank you

release 1.0.10: no main manifest attribute

I have tried to update to version 1.0.10 of the converter, using the released jar file, but I only get error message: no main manifest attribute, in stationxml-converter-1.0.10.jar.

petr% java -jar /Users/petr/bin/stationxml-converter-1.0.10.jar --help
no main manifest attribute, in /Users/petr/bin/stationxml-converter-1.0.10.jar

Looks like this problem specific to this release jar file, while the former 1.0.9 from SeisCode just works file. I also note that the jar file is significantly smaller, so it is probably reasonable to assume that something is missing from the this file.

petr% ls -la stationxml-converter-1.0.*
-rw-r--r--@ 1 petr  staff    110197 22 May 19:09 stationxml-converter-1.0.10.jar
-rw-r--r--@ 1 petr  staff  16068350  1 Feb  2017 stationxml-converter-1.0.9.jar

Error converting xml to dataless

The stationxml seed converter failed to generate dataless from https://files.anss-sis.scsn.org/preview/WR_SHER.xml . Note this file is available only for a day. I was not able to attach it to the ticket, I can email it to you if you prefer.

Command ran:
/usr/bin/java -jar stationxml-seed-converter-2.1.0.jar -s -o WR_SHER.dataless WR_SHER.xml

Output:
java.lang.NumberFormatException: Couldn't format number!-150.1 -150.1 [5 6 ]
at edu.iris.dmc.io.SeedStringBuilder.appendLocalDepth(SeedStringBuilder.java:204)
at edu.iris.dmc.seed.control.station.B052.toSeedString(B052.java:296)
at edu.iris.dmc.seed.AbstractBlockette.getSize(AbstractBlockette.java:72)
at edu.iris.dmc.seed.Volume.add(Volume.java:266)
at edu.iris.dmc.station.converter.XmlToSeedDocumentConverter.convert(XmlToSeedDocumentConverter.java:112)
at edu.iris.dmc.station.converter.XmlToSeedDocumentConverter.convert(XmlToSeedDocumentConverter.java:48)
at edu.iris.dmc.station.converter.XmlToSeedFileConverter.convert(XmlToSeedFileConverter.java:426)
at edu.iris.dmc.station.converter.XmlToSeedFileConverter.convert(XmlToSeedFileConverter.java:70)
at edu.iris.dmc.station.Application.convert(Application.java:189)
at edu.iris.dmc.station.Application.run(Application.java:127)
at edu.iris.dmc.station.Application.main(Application.java:70)
edu.iris.dmc.station.mapper.MetadataConverterException: java.lang.NumberFormatException: Couldn't format number!-150.1 -150.1 [5 6 ]
at edu.iris.dmc.station.converter.XmlToSeedDocumentConverter.convert(XmlToSeedDocumentConverter.java:329)
at edu.iris.dmc.station.converter.XmlToSeedDocumentConverter.convert(XmlToSeedDocumentConverter.java:48)
at edu.iris.dmc.station.converter.XmlToSeedFileConverter.convert(XmlToSeedFileConverter.java:426)
at edu.iris.dmc.station.converter.XmlToSeedFileConverter.convert(XmlToSeedFileConverter.java:70)
at edu.iris.dmc.station.Application.convert(Application.java:189)
at edu.iris.dmc.station.Application.run(Application.java:127)
at edu.iris.dmc.station.Application.main(Application.java:70)
Caused by: java.lang.NumberFormatException: Couldn't format number!-150.1 -150.1 [5 6 ]
at edu.iris.dmc.io.SeedStringBuilder.appendLocalDepth(SeedStringBuilder.java:204)
at edu.iris.dmc.seed.control.station.B052.toSeedString(B052.java:296)
at edu.iris.dmc.seed.AbstractBlockette.getSize(AbstractBlockette.java:72)
at edu.iris.dmc.seed.Volume.add(Volume.java:266)
at edu.iris.dmc.station.converter.XmlToSeedDocumentConverter.convert(XmlToSeedDocumentConverter.java:112)

Stationxml-seed-converter does not convert ResponselIst elements to B55

Stationxml-seed-converter does not convert a ResponselIst element to B55 when converting from StationXML to Dataless Seed. The response list elements are stripped during the conversion process, and a B55 stage is not present on the output dataless files. Output dataless files contain a stage with only a B57 and B58 or a stage with just a B58. IN the case where the output dataless contains a stages with a B57 and a B58 the files are invalid according to rule 423.

Units converted from dataless are unexpectedly modified

Units being converted from Dataless to xml are being changed in unexpected ways.

Reproduction:
All files are attached. unit_conversion.zip

  1. Convert from Dataless to XML
    java -jar stationxml-seed-converter-2.0.8-SNAPSHOT.jar --input ccm.seed --output ccm2.xml
  2. View the dataless using rdseed
B054F05     Response in units lookup:              COUNTS - Digital Counts
B054F06     Response out units lookup:             COUNTS - Digital Counts
  1. Compare to what was generated in the xml
                            <OutputUnits>
<Name>count</Name>
<Description>Digital Counts</Description>
                            </OutputUnits>

COUNTS vs count may be synonymous in most circumstances. However, it breaks evaluation in evalresp when we repull our own metadata for verification from IRIS.

(mypython) [aringler@igskgacggsaslrs for_alexis]$ evalresp CCM LH2 2019 001 0.02 0.02 1 -f /APPS/metadata/RESPS/RESP.IU.CCM.10.LH2
 EVRESP ERROR (CCM.IU.10.LH2 [File: /APPS/metadata/RESPS/RESP.IU.CCM.10.LH2; Start date: 2018,160,18:00:00.0000; Stage: 2]):
check_units; units found ('COUNT - DIGITAL COUNTS') are not supported,
skipping to next response now
EVRESP FAILED

Does stationxml-seed-converter handle instrument responses?

I have tried stationxml-seed-converter (v. 2.0.5-SNAPSHOT) to convert several SEED files to XML with only partial success. The best I got was an XML file without the instrument response information (poles-and-zeros), which were in the input dataless SEED file (which was created by an in-house program). rdseed shows 13 poles and 8 zeros in this particular SEED file.

I tried a dataless SEED file obtained today from ORFEUS with a multi-stage response (poles-and-zeros for the seismometer and a series of coefficient tables for the FIR filters in the digitiser). This gave the error message "edu.iris.dmc.seed.SeedException: Error reading buffer", then the list of FIR coefficients. rdseed on the same file shows that there are 1199 coefficients in one of the FIR filters, so perhaps the buffer really was overrun.

I tried two SEED data files that I had obtained from IRIS during the last year. One failed with "edu.iris.dmc.seed.SeedException: unsupported record type T", and the other with "java.io.IOException: Error calcuation record length!"

Happy to send you these SEED files but thought I should start by asking if stationxml-seed-converter is not (yet) able to convert instrument responses to XML format.

Error terms still being lost in XML->Dataless conversion

Couldn't re-open the previous ticket about this issue so I've created a new one.

Removal of error terms in pole-zero cases, among others, seems to be persisting from XML conversion into seed. In the attached XML several channels have error terms. Using rdseed with option '-s' on the converted dataless, we get output that matches the input except for the error terms.

This is not an issue going to XML from dataless (in fact this XML is the result of conversion from a dataless file). This appears to be the only remaining discrepancy between input and output.

CU-missing-error-terms.zip

As an example, check ANWB 00.LH1 from 2010 to 2018. The first two poles should have real error of 2.191350E-04 and imaginary error 2.394350E-04

converter to dataless is not able to handle <Sensor> <Description>

From SeisCode (issue 906):

The following IRIS station service query:

http://service.iris.edu/fdsnws/station/1/query?net=AK&sta=CAPN&loc=*&cha=BDO&level=response&format=xml&includecomments=true&nodata=404

contains tags and an attempt to convert it to dataless using:

java -jar stationxml-converter.jar

produces the following error:

edu.iris.Fissures.seed.exception.SeedInputException: input string has too many fields for blockette 33
at edu.iris.Fissures.seed.container.Blockette.setTokenString(Blockette.java:1987)
at edu.iris.Fissures.seed.container.Blockette.initialize(Blockette.java:180)
at edu.iris.Fissures.seed.container.Blockette.<init>(Blockette.java:90)
at edu.iris.Fissures.seed.container.BlocketteFactory.createBlockette(BlocketteFactory.java:65)
at edu.iris.Fissures.seed.builder.SeedObjectBuilder.build(SeedObjectBuilder.java:298)
at edu.iris.converter.SeedPrinter.do33(SeedPrinter.java:692)
at edu.iris.converter.SeedPrinter.doChannels(SeedPrinter.java:265)
at edu.iris.converter.SeedPrinter.build(SeedPrinter.java:208)
at edu.iris.converter.SeedPrinter.process(SeedPrinter.java:115)
at edu.iris.converter.Main.<init>(Main.java:197)
at edu.iris.converter.Main.main(Main.java:216)
edu.iris.Fissures.seed.exception.SeedInputException: input string has too many fields for blockette 33

If we remove the tag, then it works fine!

caseOne() test in XmlSeedXmlTest.java is failing

Build failed as a result of this error. Specific issue is on line 50, response.getStage().size() produces a value of 4 instead of the expected 3. Local copy is currently up to date.

Debugging the response object reveals that stage 0 data is present in the list returned by getStage() but that this object has null fields.

Outpu units in M**3

Hi everybody,
stationxml-converter-1.0.10.jar fails to convert dataless presenting :
B052F08 Signal units lookup: 0 M**3/M**3 - Volumetric strain
Those units a legal in SEED (i am not wrong).
Would it be possible to fix it ?
Thanks in advance
station.CL.MOKI.dataless.gz

Best regards
Catherine Péquegnat
RESIf-DC
Grenoble
France

--prettyprint has no effect

Tried with both -p and --prettyprint but the output was all one line. Not very pretty...

Ran like:
java -jar stationxml-converter-1.0.10.jar -x -so Dummy --prettyprint dataless.seed

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.