From c7631981dc0412fb5f80147a79f85587f9f19bb6 Mon Sep 17 00:00:00 2001 From: cultpenguin Date: Thu, 27 Oct 2005 10:38:21 +0000 Subject: [PATCH] *** empty log message *** --- segypy.py | 185 +++++++++++++++++++++++++++--------------------------- 1 file changed, 94 insertions(+), 91 deletions(-) diff --git a/segypy.py b/segypy.py index d7ca811..2e7d07c 100644 --- a/segypy.py +++ b/segypy.py @@ -2,11 +2,14 @@ A python module for reading/writing/manipuating SEG-Y formatted filed -segy.readSegy : Read SEGY file -segy.getSegyHeader : Get SEGY header -segy.getSegyTraceHeader : Get SEGY Trace header +segy.readSegy : Read SEGY file +segy.getSegyHeader : Get SEGY header +segy.getSegyTraceHeader : Get SEGY Trace header segy.getAllSegyTraceHeaders : Get all SEGY Trace headers -segy.getSegyTrace : Get SEGY Trace heder and trace data for one trace +segy.getSegyTrace : Get SEGY Trace heder and trace data for one trace + +segy.writeSegy : Write a data to a SEGY file +segy.writeSegyStructure : Writes a segypy data structure to a SEGY file segy.getValue : Get a value from a binary string segy.ibm2ieee : Convert IBM floats to IEEE @@ -179,27 +182,27 @@ STH_def["TraceIdenitifactionCode"]["descr"][1]={ 19: "Vibrator baseplate", 20: "Vibrator estimated ground force", 21: "Vibrator reference", - 22: "Time-velocity pairs"} STH_def["NSummedTraces"]={"pos":30 ,"type":"int16"} #'int16'); % 30 -STH_def["NStackedTraces"]={"pos":32 ,"type":"int16"} #'int16'); % 32 -STH_def["DataUse"]={"pos":34 ,"type":"int16"} #'int16'); % 34 + 22: "Time-velocity pairs"} STH_def["NSummedTraces"]={"pos":30 ,"type":"int16"} #'int16'); % 30 +STH_def["NStackedTraces"]={"pos":32 ,"type":"int16"} #'int16'); % 32 +STH_def["DataUse"]={"pos":34 ,"type":"int16"} #'int16'); % 34 STH_def["DataUse"]["descr"]={0: { 1: "Production", 2: "Test"}} STH_def["DataUse"]["descr"][1]=STH_def["DataUse"]["descr"][0] -STH_def["offset"]={"pos":36 ,"type":"int32"} #'int32'); %36 -STH_def["ReceiverGroupElevation"]={"pos":40 ,"type":"int32"} #'int32'); %40 -STH_def["SourceSurfaceElevation"]={"pos":44 ,"type":"int32"} #'int32'); %44 -STH_def["SourceDepth"]={"pos":48 ,"type":"int32"} #'int32'); %48 -STH_def["ReceiverDatumElevation"]={"pos":52 ,"type":"int32"} #'int32'); %52 -STH_def["SourceDatumElevation"]={"pos":56 ,"type":"int32"} #'int32'); %56 -STH_def["SourceWaterDepth"]={"pos":60 ,"type":"int32"} #'int32'); %60 -STH_def["GroupWaterDepth"]={"pos":64 ,"type":"int32"} #'int32'); %64 -STH_def["ElevationScalar"]={"pos":68 ,"type":"int16"} #'int16'); %68 -STH_def["SourceGroupScalar"]={"pos":70 ,"type":"int16"} #'int16'); %70 -STH_def["SourceX"]={"pos":72 ,"type":"int32"} #'int32'); %72 -STH_def["SourceY"]={"pos":76 ,"type":"int32"} #'int32'); %76 -STH_def["GroupX"]={"pos":80 ,"type":"int32"} #'int32'); %80 -STH_def["GroupY"]={"pos":84 ,"type":"int32"} #'int32'); %84 +STH_def["offset"]={"pos":36 ,"type":"int32"} #'int32'); %36 +STH_def["ReceiverGroupElevation"]={"pos":40 ,"type":"int32"} #'int32'); %40 +STH_def["SourceSurfaceElevation"]={"pos":44 ,"type":"int32"} #'int32'); %44 +STH_def["SourceDepth"]={"pos":48 ,"type":"int32"} #'int32'); %48 +STH_def["ReceiverDatumElevation"]={"pos":52 ,"type":"int32"} #'int32'); %52 +STH_def["SourceDatumElevation"]={"pos":56 ,"type":"int32"} #'int32'); %56 +STH_def["SourceWaterDepth"]={"pos":60 ,"type":"int32"} #'int32'); %60 +STH_def["GroupWaterDepth"]={"pos":64 ,"type":"int32"} #'int32'); %64 +STH_def["ElevationScalar"]={"pos":68 ,"type":"int16"} #'int16'); %68 +STH_def["SourceGroupScalar"]={"pos":70 ,"type":"int16"} #'int16'); %70 +STH_def["SourceX"]={"pos":72 ,"type":"int32"} #'int32'); %72 +STH_def["SourceY"]={"pos":76 ,"type":"int32"} #'int32'); %76 +STH_def["GroupX"]={"pos":80 ,"type":"int32"} #'int32'); %80 +STH_def["GroupY"]={"pos":84 ,"type":"int32"} #'int32'); %84 STH_def["CoordinateUnits"]={"pos":88 ,"type":"int16"} #'int16'); %88 STH_def["CoordinateUnits"]["descr"]={1: { 1: "Length (meters or feet)", @@ -208,39 +211,39 @@ STH_def["CoordinateUnits"]["descr"][1]={ 1: "Length (meters or feet)", 2: "Seconds of arc", 3: "Decimal degrees", - 4: "Degrees, minutes, seconds (DMS)"} -STH_def["WeatheringVelocity"]={"pos":90 ,"type":"int16"} #'int16'); %90 -STH_def["SubWeatheringVelocity"]={"pos":92 ,"type":"int16"} #'int16'); %92 -STH_def["SourceUpholeTime"]={"pos":94 ,"type":"int16"} #'int16'); %94 -STH_def["GroupUpholeTime"]={"pos":96 ,"type":"int16"} #'int16'); %96 -STH_def["SourceStaticCorrection"]={"pos":98 ,"type":"int16"} #'int16'); %98 -STH_def["GroupStaticCorrection"]={"pos":100 ,"type":"int16"} #'int16'); %100 -STH_def["TotalStaticApplied"]={"pos":102 ,"type":"int16"} #'int16'); %102 -STH_def["LagTimeA"]={"pos":104 ,"type":"int16"} #'int16'); %104 -STH_def["LagTimeB"]={"pos":106 ,"type":"int16"} #'int16'); %106 -STH_def["DelayRecordingTime"]={"pos":108 ,"type":"int16"} #'int16'); %108 -STH_def["MuteTimeStart"]={"pos":110 ,"type":"int16"} #'int16'); %110 -STH_def["MuteTimeEND"]={"pos":112 ,"type":"int16"} #'int16'); %112 -STH_def["ns"]={"pos":114 ,"type":"uint16"} #'uint16'); %114 -STH_def["dt"]={"pos":116 ,"type":"uint16"} #'uint16'); %116 -STH_def["GainType"]={"pos":119 ,"type":"int16"} #'int16'); %118 + 4: "Degrees, minutes, seconds (DMS)"} +STH_def["WeatheringVelocity"]={"pos":90 ,"type":"int16"} #'int16'); %90 +STH_def["SubWeatheringVelocity"]={"pos":92 ,"type":"int16"} #'int16'); %92 +STH_def["SourceUpholeTime"]={"pos":94 ,"type":"int16"} #'int16'); %94 +STH_def["GroupUpholeTime"]={"pos":96 ,"type":"int16"} #'int16'); %96 +STH_def["SourceStaticCorrection"]={"pos":98 ,"type":"int16"} #'int16'); %98 +STH_def["GroupStaticCorrection"]={"pos":100 ,"type":"int16"} #'int16'); %100 +STH_def["TotalStaticApplied"]={"pos":102 ,"type":"int16"} #'int16'); %102 +STH_def["LagTimeA"]={"pos":104 ,"type":"int16"} #'int16'); %104 +STH_def["LagTimeB"]={"pos":106 ,"type":"int16"} #'int16'); %106 +STH_def["DelayRecordingTime"]={"pos":108 ,"type":"int16"} #'int16'); %108 +STH_def["MuteTimeStart"]={"pos":110 ,"type":"int16"} #'int16'); %110 +STH_def["MuteTimeEND"]={"pos":112 ,"type":"int16"} #'int16'); %112 +STH_def["ns"]={"pos":114 ,"type":"uint16"} #'uint16'); %114 +STH_def["dt"]={"pos":116 ,"type":"uint16"} #'uint16'); %116 +STH_def["GainType"]={"pos":119 ,"type":"int16"} #'int16'); %118 STH_def["GainType"]["descr"]={0: { 1: "Fixes", 2: "Binary", 3: "Floating point"}} STH_def["GainType"]["descr"][1]=STH_def["GainType"]["descr"][0] -STH_def["InstrumentGainConstant"]={"pos":120 ,"type":"int16"} #'int16'); %120 -STH_def["InstrumentInitialGain"]={"pos":122 ,"type":"int16"} #'int16'); %%122 +STH_def["InstrumentGainConstant"]={"pos":120 ,"type":"int16"} #'int16'); %120 +STH_def["InstrumentInitialGain"]={"pos":122 ,"type":"int16"} #'int16'); %%122 STH_def["Correlated"]={"pos":124 ,"type":"int16"} #'int16'); %124 STH_def["Correlated"]["descr"]={0: { 1: "No", 2: "Yes"}} STH_def["Correlated"]["descr"][1]=STH_def["Correlated"]["descr"][0] - -STH_def["SweepFrequenceStart"]={"pos":126 ,"type":"int16"} #'int16'); %126 -STH_def["SweepFrequenceEnd"]={"pos":128 ,"type":"int16"} #'int16'); %128 -STH_def["SweepLength"]={"pos":130 ,"type":"int16"} #'int16'); %130 -STH_def["SweepType"]={"pos":132 ,"type":"int16"} #'int16'); %132 + +STH_def["SweepFrequenceStart"]={"pos":126 ,"type":"int16"} #'int16'); %126 +STH_def["SweepFrequenceEnd"]={"pos":128 ,"type":"int16"} #'int16'); %128 +STH_def["SweepLength"]={"pos":130 ,"type":"int16"} #'int16'); %130 +STH_def["SweepType"]={"pos":132 ,"type":"int16"} #'int16'); %132 STH_def["SweepType"]["descr"]={0: { 1: "linear", 2: "parabolic", @@ -248,28 +251,28 @@ STH_def["SweepType"]["descr"]={0: { 4: "other"}} STH_def["SweepType"]["descr"][1]=STH_def["SweepType"]["descr"][0] -STH_def["SweepTraceTaperLengthStart"]={"pos":134 ,"type":"int16"} #'int16'); %134 -STH_def["SweepTraceTaperLengthEnd"]={"pos":136 ,"type":"int16"} #'int16'); %136 +STH_def["SweepTraceTaperLengthStart"]={"pos":134 ,"type":"int16"} #'int16'); %134 +STH_def["SweepTraceTaperLengthEnd"]={"pos":136 ,"type":"int16"} #'int16'); %136 STH_def["TaperType"]={"pos":138 ,"type":"int16"} #'int16'); %138 STH_def["TaperType"]["descr"]={0: { 1: "linear", 2: "cos2c", 3: "other"}} -STH_def["TaperType"]["descr"][1]=STH_def["TaperType"]["descr"][0] +STH_def["TaperType"]["descr"][1]=STH_def["TaperType"]["descr"][0] -STH_def["AliasFilterFrequency"]={"pos":140 ,"type":"int16"} #'int16'); %140 -STH_def["AliasFilterSlope"]={"pos":142 ,"type":"int16"} #'int16'); %142 -STH_def["NotchFilterFrequency"]={"pos":144 ,"type":"int16"} #'int16'); %144 -STH_def["NotchFilterSlope"]={"pos":146 ,"type":"int16"} #'int16'); %146 -STH_def["LowCutFrequency"]={"pos":148 ,"type":"int16"} #'int16'); %148 -STH_def["HighCutFrequency"]={"pos":150 ,"type":"int16"} #'int16'); %150 -STH_def["LowCutSlope"]={"pos":152 ,"type":"int16"} #'int16'); %152 -STH_def["HighCutSlope"]={"pos":154 ,"type":"int16"} #'int16'); %154 -STH_def["YearDataRecorded"]={"pos":156 ,"type":"int16"} #'int16'); %156 -STH_def["DayOfYear"]={"pos":158 ,"type":"int16"} #'int16'); %158 -STH_def["HourOfDay"]={"pos":160 ,"type":"int16"} #'int16'); %160 -STH_def["MinuteOfHour"]={"pos":162 ,"type":"int16"} #'int16'); %162 -STH_def["SecondOfMinute"]={"pos":164 ,"type":"int16"} #'int16'); %164 +STH_def["AliasFilterFrequency"]={"pos":140 ,"type":"int16"} #'int16'); %140 +STH_def["AliasFilterSlope"]={"pos":142 ,"type":"int16"} #'int16'); %142 +STH_def["NotchFilterFrequency"]={"pos":144 ,"type":"int16"} #'int16'); %144 +STH_def["NotchFilterSlope"]={"pos":146 ,"type":"int16"} #'int16'); %146 +STH_def["LowCutFrequency"]={"pos":148 ,"type":"int16"} #'int16'); %148 +STH_def["HighCutFrequency"]={"pos":150 ,"type":"int16"} #'int16'); %150 +STH_def["LowCutSlope"]={"pos":152 ,"type":"int16"} #'int16'); %152 +STH_def["HighCutSlope"]={"pos":154 ,"type":"int16"} #'int16'); %154 +STH_def["YearDataRecorded"]={"pos":156 ,"type":"int16"} #'int16'); %156 +STH_def["DayOfYear"]={"pos":158 ,"type":"int16"} #'int16'); %158 +STH_def["HourOfDay"]={"pos":160 ,"type":"int16"} #'int16'); %160 +STH_def["MinuteOfHour"]={"pos":162 ,"type":"int16"} #'int16'); %162 +STH_def["SecondOfMinute"]={"pos":164 ,"type":"int16"} #'int16'); %164 STH_def["TimeBaseCode"]={"pos":166 ,"type":"int16"} #'int16'); %166 STH_def["TimeBaseCode"]["descr"]={0: { 1: "Local", @@ -279,27 +282,27 @@ STH_def["TimeBaseCode"]["descr"][1]={ 1: "Local", 2: "GMT", 3: "Other", - 4: "UTC"} -STH_def["TraceWeightningFactor"]={"pos":168 ,"type":"int16"} #'int16'); %170 -STH_def["GeophoneGroupNumberRoll1"]={"pos":170 ,"type":"int16"} #'int16'); %172 -STH_def["GeophoneGroupNumberFirstTraceOrigField"]={"pos":172 ,"type":"int16"} #'int16'); %174 -STH_def["GeophoneGroupNumberLastTraceOrigField"]={"pos":174 ,"type":"int16"} #'int16'); %176 -STH_def["GapSize"]={"pos":176 ,"type":"int16"} #'int16'); %178 + 4: "UTC"} +STH_def["TraceWeightningFactor"]={"pos":168 ,"type":"int16"} #'int16'); %170 +STH_def["GeophoneGroupNumberRoll1"]={"pos":170 ,"type":"int16"} #'int16'); %172 +STH_def["GeophoneGroupNumberFirstTraceOrigField"]={"pos":172 ,"type":"int16"} #'int16'); %174 +STH_def["GeophoneGroupNumberLastTraceOrigField"]={"pos":174 ,"type":"int16"} #'int16'); %176 +STH_def["GapSize"]={"pos":176 ,"type":"int16"} #'int16'); %178 STH_def["OverTravel"]={"pos":178 ,"type":"int16"} #'int16'); %178 STH_def["OverTravel"]["descr"]={0: { 1: "down (or behind)", 2: "up (or ahead)", 3: "other"}} -STH_def["OverTravel"]["descr"][1]=STH_def["OverTravel"]["descr"][0] +STH_def["OverTravel"]["descr"][1]=STH_def["OverTravel"]["descr"][0] - -STH_def["cdpX"]={"pos":180 ,"type":"int32"} #'int32'); %180 -STH_def["cdpY"]={"pos":184 ,"type":"int32"} #'int32'); %184 -STH_def["Inline3D"]={"pos":188 ,"type":"int32"} #'int32'); %188 -STH_def["Crossline3D"]={"pos":192 ,"type":"int32"} #'int32'); %192 -STH_def["ShotPoint"]={"pos":192 ,"type":"int32"} #'int32'); %196 -STH_def["ShotPointScalar"]={"pos":200 ,"type":"int16"} #'int16'); %200 -STH_def["TraceValueMeasurementUnit"]={"pos":202 ,"type":"int16"} #'int16'); %202 + +STH_def["cdpX"]={"pos":180 ,"type":"int32"} #'int32'); %180 +STH_def["cdpY"]={"pos":184 ,"type":"int32"} #'int32'); %184 +STH_def["Inline3D"]={"pos":188 ,"type":"int32"} #'int32'); %188 +STH_def["Crossline3D"]={"pos":192 ,"type":"int32"} #'int32'); %192 +STH_def["ShotPoint"]={"pos":192 ,"type":"int32"} #'int32'); %196 +STH_def["ShotPointScalar"]={"pos":200 ,"type":"int16"} #'int16'); %200 +STH_def["TraceValueMeasurementUnit"]={"pos":202 ,"type":"int16"} #'int16'); %202 STH_def["TraceValueMeasurementUnit"]["descr"] = {1: { -1: "Other", 0: "Unknown (should be described in Data Sample Measurement Units Stanza) ", @@ -311,13 +314,13 @@ STH_def["TraceValueMeasurementUnit"]["descr"] = {1: { 6: "Meters Per Second (m/s)", 7: "Meters Per Second squared (m/&s2)Other", 8: "Newton (N)", - 9: "Watt (W)"}} -STH_def["TransductionConstantMantissa"]={"pos":204 ,"type":"int32"} #'int32'); %204 -STH_def["TransductionConstantPower"]={"pos":208 ,"type":"int16"} #'int16'); %208 + 9: "Watt (W)"}} +STH_def["TransductionConstantMantissa"]={"pos":204 ,"type":"int32"} #'int32'); %204 +STH_def["TransductionConstantPower"]={"pos":208 ,"type":"int16"} #'int16'); %208 STH_def["TransductionUnit"]={"pos":210 ,"type":"int16"} #'int16'); %210 -STH_def["TransductionUnit"]["descr"] = STH_def["TraceValueMeasurementUnit"]["descr"] -STH_def["TraceIdentifier"]={"pos":212 ,"type":"int16"} #'int16'); %212 -STH_def["ScalarTraceHeader"]={"pos":214 ,"type":"int16"} #'int16'); %214 +STH_def["TransductionUnit"]["descr"] = STH_def["TraceValueMeasurementUnit"]["descr"] +STH_def["TraceIdentifier"]={"pos":212 ,"type":"int16"} #'int16'); %212 +STH_def["ScalarTraceHeader"]={"pos":214 ,"type":"int16"} #'int16'); %214 STH_def["SourceType"]={"pos":216 ,"type":"int16"} #'int16'); %216 STH_def["SourceType"]["descr"] = {1: { -1: "Other (should be described in Source Type/Orientation stanza)", @@ -331,11 +334,11 @@ STH_def["SourceType"]["descr"] = {1: { 7: "Distributed Impulsive - Vertical orientation", 8: "Distributed Impulsive - Cross-line orientation", 9: "Distributed Impulsive - In-line orientation"}} - -STH_def["SourceEnergyDirectionMantissa"]={"pos":218 ,"type":"int32"} #'int32'); %218 -STH_def["SourceEnergyDirectionExponent"]={"pos":222 ,"type":"int16"} #'int16'); %222 -STH_def["SourceMeasurementMantissa"]={"pos":224 ,"type":"int32"} #'int32'); %224 -STH_def["SourceMeasurementExponent"]={"pos":228 ,"type":"int16"} #'int16'); %228 + +STH_def["SourceEnergyDirectionMantissa"]={"pos":218 ,"type":"int32"} #'int32'); %218 +STH_def["SourceEnergyDirectionExponent"]={"pos":222 ,"type":"int16"} #'int16'); %222 +STH_def["SourceMeasurementMantissa"]={"pos":224 ,"type":"int32"} #'int32'); %224 +STH_def["SourceMeasurementExponent"]={"pos":228 ,"type":"int16"} #'int16'); %228 STH_def["SourceMeasurementUnit"]={"pos":230 ,"type":"int16"} #'int16'); %230 STH_def["SourceMeasurementUnit"]["descr"] = {1: { -1: "Other (should be described in Source Measurement Unit stanza)", @@ -346,11 +349,11 @@ STH_def["SourceMeasurementUnit"]["descr"] = {1: { 4: "Bar (Bar)", 4: "Bar-meter (Bar-m)", 5: "Newton (N)", - 6: "Kilograms (kg)"}} -STH_def["UnassignedInt1"]={"pos":232 ,"type":"int32"} #'int32'); %232 -STH_def["UnassignedInt2"]={"pos":236 ,"type":"int32"} #'int32'); %236 + 6: "Kilograms (kg)"}} +STH_def["UnassignedInt1"]={"pos":232 ,"type":"int32"} #'int32'); %232 +STH_def["UnassignedInt2"]={"pos":236 ,"type":"int32"} #'int32'); %236 + - ############## # FUNCTIONS @@ -669,7 +672,7 @@ def writeSegy(filename,Data,dt=.001,STHin={}): def writeSegyStructure(filename,Data,SH,STH): """ - writeSegyHeader(filename,Data,SegyHeader,SegyTraceHeaders) + writeSegyStructure(filename,Data,SegyHeader,SegyTraceHeaders) Write SEGY file using SegyPy data structures