@@ -177,12 +177,12 class SpectraProc(ProcessingUnit): | |||
|
177 | 177 | self.id_max = nProfiles |
|
178 | 178 | |
|
179 | 179 | self.buffer = self.dataIn.data[:, self.id_min:self.id_max,:] |
|
180 | if self.id_max == nVoltProfiles: | |
|
181 | self.reader.bypass = False | |
|
182 | ||
|
180 | 183 | self.profIndex += nProfiles |
|
181 | 184 | self.id_min += nProfiles |
|
182 | 185 | self.id_max += nProfiles |
|
183 | if self.id_max == nVoltProfiles: | |
|
184 | self.reader.bypass = False | |
|
185 | ||
|
186 | 186 | else: |
|
187 | 187 | raise ValueError("The type object %s has %d profiles, it should just has %d profiles" % ( |
|
188 | 188 | self.dataIn.type, self.dataIn.data.shape[1], nProfiles)) |
@@ -470,7 +470,7 class removeDC(Operation): | |||
|
470 | 470 | xx_inv = numpy.linalg.inv(xx) |
|
471 | 471 | xx_aux = xx_inv[0, :] |
|
472 | 472 | |
|
473 |
for ich in range(num_chan): |
|
|
473 | for ich in range(num_chan): | |
|
474 | 474 | yy = jspectra[ich, ind_vel, :] |
|
475 | 475 | jspectra[ich, freq_dc, :] = numpy.dot(xx_aux, yy) |
|
476 | 476 | |
@@ -486,6 +486,34 class removeDC(Operation): | |||
|
486 | 486 | yy = jcspectra[ip, ind_vel, :] |
|
487 | 487 | jcspectra[ip, freq_dc, :] = numpy.dot(xx_aux, yy) |
|
488 | 488 | |
|
489 | if mode == 3: # dc en la velocidad cero cuando se usa flip | |
|
490 | ||
|
491 | vel = numpy.array([-2, -1, 1, 2]) | |
|
492 | xx = numpy.zeros([4, 4]) | |
|
493 | ||
|
494 | for fil in range(4): | |
|
495 | xx[fil, :] = vel[fil] ** numpy.asarray(list(range(4))) | |
|
496 | ||
|
497 | xx_inv = numpy.linalg.inv(xx) | |
|
498 | xx_aux = xx_inv[0, :] | |
|
499 | ||
|
500 | for ich in range(num_chan): | |
|
501 | ||
|
502 | ind_freq_flip=[-1, -2, 1, 2] | |
|
503 | yy = jspectra[ich, ind_freq_flip, :] | |
|
504 | jspectra[ich, 0, :] = numpy.dot(xx_aux, yy) | |
|
505 | junkid = jspectra[ich, 0, :] <= 0 | |
|
506 | cjunkid = sum(junkid) | |
|
507 | ||
|
508 | if cjunkid.any(): | |
|
509 | jspectra[ich, 0, junkid.nonzero()] = ( | |
|
510 | jspectra[ich, ind_freq_flip[0], junkid] + jspectra[ich, ind_freq_flip[2], junkid]) / 2 | |
|
511 | ||
|
512 | if jcspectraExist: | |
|
513 | for ip in range(num_pairs): | |
|
514 | yy = jcspectra[ip, ind_freq_flip, :] | |
|
515 | jcspectra[ip, 0, :] = numpy.dot(xx_aux, yy) | |
|
516 | ||
|
489 | 517 | self.dataOut.data_spc = jspectra |
|
490 | 518 | self.dataOut.data_cspc = jcspectra |
|
491 | 519 | |
@@ -749,6 +777,10 class IncohInt(Operation): | |||
|
749 | 777 | __buffer_cspc = None |
|
750 | 778 | __buffer_dc = None |
|
751 | 779 | |
|
780 | # JULIA processing | |
|
781 | __buffer_diffcspc = None | |
|
782 | __buffer_oldcspc = None | |
|
783 | # JULIA processing | |
|
752 | 784 | __dataReady = False |
|
753 | 785 | |
|
754 | 786 | __timeInterval = None |
@@ -778,10 +810,17 class IncohInt(Operation): | |||
|
778 | 810 | self.__buffer_cspc = 0 |
|
779 | 811 | self.__buffer_dc = 0 |
|
780 | 812 | |
|
813 | # JULIA processing | |
|
814 | self.__buffer_diffcspc = 0 | |
|
815 | self.__buffer_oldcspc = 0 | |
|
816 | # JULIA processing | |
|
781 | 817 | self.__profIndex = 0 |
|
782 | 818 | self.__dataReady = False |
|
783 | 819 | self.__byTime = False |
|
784 | 820 | |
|
821 | # JULIA processing | |
|
822 | self.__FirstBlock = True | |
|
823 | # JULIA processing | |
|
785 | 824 | if n is None and timeInterval is None: |
|
786 | 825 | raise ValueError("n or timeInterval should be specified ...") |
|
787 | 826 | |
@@ -805,6 +844,10 class IncohInt(Operation): | |||
|
805 | 844 | self.__buffer_cspc = None |
|
806 | 845 | else: |
|
807 | 846 | self.__buffer_cspc += data_cspc |
|
847 | # JULIA processing | |
|
848 | self.__buffer_diffcspc += (data_cspc * numpy.conj(self.__buffer_oldcspc)) | |
|
849 | self.__buffer_oldcspc = data_cspc | |
|
850 | # JULIA processing | |
|
808 | 851 | |
|
809 | 852 | if data_dc is None: |
|
810 | 853 | self.__buffer_dc = None |
@@ -828,47 +871,51 class IncohInt(Operation): | |||
|
828 | 871 | data_spc = self.__buffer_spc |
|
829 | 872 | data_cspc = self.__buffer_cspc |
|
830 | 873 | data_dc = self.__buffer_dc |
|
874 | data_diffcspc = self.__buffer_diffcspc | |
|
831 | 875 | n = self.__profIndex |
|
832 | 876 | |
|
833 | 877 | self.__buffer_spc = 0 |
|
834 | 878 | self.__buffer_cspc = 0 |
|
835 | 879 | self.__buffer_dc = 0 |
|
880 | self.__buffer_diffcspc = 0 | |
|
836 | 881 | self.__profIndex = 0 |
|
837 | 882 | |
|
838 | return data_spc, data_cspc, data_dc, n | |
|
883 | return data_spc, data_cspc, data_diffcspc, data_dc, n | |
|
839 | 884 | |
|
840 | 885 | def byProfiles(self, *args): |
|
841 | 886 | |
|
842 | 887 | self.__dataReady = False |
|
843 | 888 | avgdata_spc = None |
|
844 | 889 | avgdata_cspc = None |
|
890 | avgdata_diffcspc = None | |
|
845 | 891 | avgdata_dc = None |
|
846 | 892 | |
|
847 | 893 | self.putData(*args) |
|
848 | 894 | |
|
849 | 895 | if self.__profIndex == self.n: |
|
850 | 896 | |
|
851 | avgdata_spc, avgdata_cspc, avgdata_dc, n = self.pushData() | |
|
897 | avgdata_spc, avgdata_cspc, avgdata_diffcspc, avgdata_dc, n = self.pushData() | |
|
852 | 898 | self.n = n |
|
853 | 899 | self.__dataReady = True |
|
854 | 900 | |
|
855 | return avgdata_spc, avgdata_cspc, avgdata_dc | |
|
901 | return avgdata_spc, avgdata_cspc, avgdata_diffcspc, avgdata_dc | |
|
856 | 902 | |
|
857 | 903 | def byTime(self, datatime, *args): |
|
858 | 904 | |
|
859 | 905 | self.__dataReady = False |
|
860 | 906 | avgdata_spc = None |
|
861 | 907 | avgdata_cspc = None |
|
908 | avgdata_diffcspc = None | |
|
862 | 909 | avgdata_dc = None |
|
863 | 910 | |
|
864 | 911 | self.putData(*args) |
|
865 | 912 | |
|
866 | 913 | if (datatime - self.__initime) >= self.__integrationtime: |
|
867 | avgdata_spc, avgdata_cspc, avgdata_dc, n = self.pushData() | |
|
914 | avgdata_spc, avgdata_cspc, avgdata_diffcspc, avgdata_dc, n = self.pushData() | |
|
868 | 915 | self.n = n |
|
869 | 916 | self.__dataReady = True |
|
870 | 917 | |
|
871 | return avgdata_spc, avgdata_cspc, avgdata_dc | |
|
918 | return avgdata_spc, avgdata_cspc, avgdata_diffcspc, avgdata_dc | |
|
872 | 919 | |
|
873 | 920 | def integrate(self, datatime, *args): |
|
874 | 921 | |
@@ -876,17 +923,18 class IncohInt(Operation): | |||
|
876 | 923 | self.__initime = datatime |
|
877 | 924 | |
|
878 | 925 | if self.__byTime: |
|
879 | avgdata_spc, avgdata_cspc, avgdata_dc = self.byTime( | |
|
926 | avgdata_spc, avgdata_cspc, avgdata_diffcspc, avgdata_dc = self.byTime( | |
|
880 | 927 | datatime, *args) |
|
881 | 928 | else: |
|
882 | avgdata_spc, avgdata_cspc, avgdata_dc = self.byProfiles(*args) | |
|
929 | avgdata_spc, avgdata_cspc, avgdata_diffcspc, avgdata_dc = self.byProfiles(*args) | |
|
883 | 930 | |
|
884 | 931 | if not self.__dataReady: |
|
885 | return None, None, None, None | |
|
932 | return None, None, None, None, None | |
|
886 | 933 | |
|
887 | return self.__initime, avgdata_spc, avgdata_cspc, avgdata_dc | |
|
934 | return self.__initime, avgdata_spc, avgdata_cspc, avgdata_diffcspc, avgdata_dc | |
|
888 | 935 | |
|
889 | 936 | def run(self, dataOut, n=None, timeInterval=None, overlapping=False): |
|
937 | ||
|
890 | 938 | if n == 1: |
|
891 | 939 | return dataOut |
|
892 | 940 | |
@@ -896,17 +944,25 class IncohInt(Operation): | |||
|
896 | 944 | self.setup(n, timeInterval, overlapping) |
|
897 | 945 | self.isConfig = True |
|
898 | 946 | |
|
899 | avgdatatime, avgdata_spc, avgdata_cspc, avgdata_dc = self.integrate(dataOut.utctime, | |
|
900 | dataOut.data_spc, | |
|
901 | dataOut.data_cspc, | |
|
902 | dataOut.data_dc) | |
|
903 | ||
|
947 | avgdatatime, avgdata_spc, avgdata_cspc, avgdata_diffcspc, avgdata_dc = self.integrate(dataOut.utctime, | |
|
948 | dataOut.data_spc, | |
|
949 | dataOut.data_cspc, | |
|
950 | dataOut.data_dc) | |
|
951 | ||
|
904 | 952 | if self.__dataReady: |
|
905 | 953 | |
|
906 | 954 | dataOut.data_spc = avgdata_spc |
|
907 | 955 | dataOut.data_cspc = avgdata_cspc |
|
908 |
dataOut.data_dc = avgdata_d |
|
|
909 | dataOut.nIncohInt *= self.n | |
|
956 | dataOut.data_diffcspc = avgdata_diffcspc | |
|
957 | dataOut.data_dc = avgdata_dc | |
|
958 | dataOut.nDiffIncohInt = dataOut.nIncohInt | |
|
959 | dataOut.nIncohInt *= self.n | |
|
960 | if self.__FirstBlock: | |
|
961 | dataOut.nDiffIncohInt *= (self.n - 1) | |
|
962 | self.__FirstBlock = False | |
|
963 | else: | |
|
964 | dataOut.nDiffIncohInt *= self.n | |
|
965 | ||
|
910 | 966 | dataOut.utctime = avgdatatime |
|
911 | 967 | dataOut.flagNoData = False |
|
912 | 968 |
General Comments 0
You need to be logged in to leave comments.
Login now