Project

General

Profile

Data format » History » Revision 14

Revision 13 (Anonymous, 03/05/2020 03:34 PM) → Revision 14/21 (Anonymous, 03/05/2020 03:34 PM)

h1. Data format 

 La fonction de lecture d'un fichier de des données est la suivante: suivantes, pour un fichier: 

 <pre><code class="python"> 
 def readFileADLINKCh0( filename, samplesPerFile, timeSerie_A ): 
     fd = open(filename,'rb') 
    
     dum = np.fromfile(fd, dtype = np.uint16) 

     timeSerie_A[:] = dum[:] 
    
     fd.close() 
 </code></pre> 

 On fait une boucle pour lire tous les fichiers et créer une matrice contenant une ligne par fichier: 

 <pre><code class="python"> 
 firstFile = 0 
 nbFiles = 59 
 lastFile = firstFile + nbFiles - 1 
 firstBuffer = firstFile * buffersPerFile 
 lastBuffer = (nbFiles-1) * buffersPerFile + firstBuffer 

 scalingFactor = 2 / 65535  
 offset = -32768 

 timeSerie_A = np.zeros( samplesPerFile ) 
 adc_A = np.zeros( (nbFiles, samplesPerFile) ) 

 for k in range( nbFiles ): 
    
     # read the data 
     nb = str( int( k * buffersPerFile + firstBuffer) ) 
     filename = data_dir + "/record" + nb + ".bin" 
     readFileADLINKCh0( filename, samplesPerFile, timeSerie_A ) 
    
     print("k = {}, block = {} / {}".format(k, nb, lastBuffer)) 
    
     adc_A[ k, : ] = (timeSerie_A + offset) * scalingFactor 
 </code></pre> 

 Les données étant lues, on remet en forme la matrice, une ligne par période de signal et on ne garde que le signal correspondant aux rampes montantes: 

 <pre><code class="python"> 
 A_reshaped = adc_A.reshape(nbFiles * rampsPerFile, samplesPerRamp) 

 samplesPerDownRamp = int(samplesPerRamp/2) 
 A_rampUp = A_reshaped[:, 0:samplesPerDownRamp] 
 </code></pre> 

 On obtient ainsi une matrice contenant toutes les rampes montantes. 

 *Note:* dans l'exemple *2019_07_12_14_12_21*, les paramètres sont les suivants: 

 <pre><code class="xml"> 
 <?xml version="1.0" encoding="UTF-8"?> 
 <posarmc version="2.0"> 
     <posarV2> 
         <rampsPerBuffer value="500" units="-"/> 
         <bufferSize value="20000000" units="byte"/> 
         <buffersPerFile value="2" units="byte"/> 
         <rampsPerFile value="1000" units="-"/> 
         <fileSize value="4e+7" units="byte"/> 
         <samplingFrequency value="2e+7" units="Hz"/> 
         <samplesPerRamp value="20000" units="-"/> 
         <skipNSamples value="0" units="-"/> 
         <rampPeriod value="1000" units="-"/> 
         <startFrequency value="9800" units="-"/> 
         <stopFrequency value="10100" units="-"/> 
     </posarV2> 
 </posarmc> 
 </code></pre>