Commit ff1aaab0aa27803e6bf7c1664c14435fbd17bb76

Authored by Jürgen Knödlseder
1 parent 381fb883

Reorder code in documentation (first C++, then Python)

doc/source/users/user_manual/modules/fits/create.rst
@@ -6,27 +6,6 @@ one image and one table (see ``examples/cpp/createfits/createfits.cpp`` for the @@ -6,27 +6,6 @@ one image and one table (see ``examples/cpp/createfits/createfits.cpp`` for the
6 source code; the line numbers are for reference and are not part of 6 source code; the line numbers are for reference and are not part of
7 the source code) 7 the source code)
8 8
9 -**Python**  
10 -  
11 -.. code-block:: python  
12 - :linenos:  
13 -  
14 - fits = gammalib.GFits()  
15 - image = gammalib.GFitsImageDouble(20,10)  
16 - for x in range(20):  
17 - for y in range(10):  
18 - image[x,y] = x+100.0*y  
19 - fits.append(image)  
20 - table = gammalib.GFitsBinTable()  
21 - column = gammalib.GFitsTableDoubleCol('ENERGY', 10, 3)  
22 - for row in range(10):  
23 - for index in range(3):  
24 - column[row, index] = row*100.0+index  
25 - table.append(column)  
26 - fits.append(table)  
27 - fits.saveto('my_fits_file.fits', True)  
28 - fits.close()  
29 -  
30 **C++** 9 **C++**
31 10
32 .. code-block:: cpp 11 .. code-block:: cpp
@@ -52,6 +31,27 @@ the source code) @@ -52,6 +31,27 @@ the source code)
52 fits.saveto("my_fits_file.fits", true); 31 fits.saveto("my_fits_file.fits", true);
53 fits.close(); 32 fits.close();
54 33
  34 +**Python**
  35 +
  36 +.. code-block:: python
  37 + :linenos:
  38 +
  39 + fits = gammalib.GFits()
  40 + image = gammalib.GFitsImageDouble(20,10)
  41 + for x in range(20):
  42 + for y in range(10):
  43 + image[x,y] = x+100.0*y
  44 + fits.append(image)
  45 + table = gammalib.GFitsBinTable()
  46 + column = gammalib.GFitsTableDoubleCol('ENERGY', 10, 3)
  47 + for row in range(10):
  48 + for index in range(3):
  49 + column[row, index] = row*100.0+index
  50 + table.append(column)
  51 + fits.append(table)
  52 + fits.saveto('my_fits_file.fits', True)
  53 + fits.close()
  54 +
55 In line 1, a FITS object is allocated in memory. 55 In line 1, a FITS object is allocated in memory.
56 An image is created in line 2, comprising 20 pixels in the x-direction 56 An image is created in line 2, comprising 20 pixels in the x-direction
57 and 10 pixels in the y-direction, each pixel being a double precision 57 and 10 pixels in the y-direction, each pixel being a double precision
doc/source/users/user_manual/modules/obs/caldb.rst
@@ -11,37 +11,28 @@ The database is the open by specifying a mission and an instrument name. @@ -11,37 +11,28 @@ The database is the open by specifying a mission and an instrument name.
11 The examples below show two variants of opening the ``prod2`` database for 11 The examples below show two variants of opening the ``prod2`` database for
12 ``CTA``. 12 ``CTA``.
13 13
14 -**Python**  
15 -  
16 -.. code-block:: python  
17 - :linenos:  
18 -  
19 - import gammalib # Make GammaLib available  
20 - caldb1 = gammalib.GCaldb('cta','prod2') # Using opening constructor  
21 - caldb2 = gammalib.GCaldb()  
22 - caldb2.open('cta','prod2') # Using open method  
23 -  
24 **C++** 14 **C++**
25 15
26 .. code-block:: cpp 16 .. code-block:: cpp
27 :linenos: 17 :linenos:
28 18
29 - #include "GammaLib.hpp" // Make GammaLib available  
30 GCaldb caldb1("cta","prod2"); // Using opening constructor 19 GCaldb caldb1("cta","prod2"); // Using opening constructor
31 GCaldb caldb2; 20 GCaldb caldb2;
32 caldb2.open("cta","prod2"); // Using open method 21 caldb2.open("cta","prod2"); // Using open method
33 22
34 -Once opened, the database can be used to locate for example the filename  
35 -of a response component. The examples below show how the effective area  
36 -filename for the response ``South_5h`` is accessed via the calibration  
37 -database.  
38 -  
39 **Python** 23 **Python**
40 24
41 .. code-block:: python 25 .. code-block:: python
42 :linenos: 26 :linenos:
43 27
44 - filename = caldb1.filename('','','EFF_AREA','','','NAME(South_5h)') 28 + caldb1 = gammalib.GCaldb('cta','prod2') # Using opening constructor
  29 + caldb2 = gammalib.GCaldb()
  30 + caldb2.open('cta','prod2') # Using open method
  31 +
  32 +Once opened, the database can be used to locate for example the filename
  33 +of a response component. The examples below show how the effective area
  34 +filename for the response ``South_5h`` is accessed via the calibration
  35 +database.
45 36
46 **C++** 37 **C++**
47 38
@@ -49,3 +40,10 @@ database. @@ -49,3 +40,10 @@ database.
49 :linenos: 40 :linenos:
50 41
51 GFilename filename = caldb1.filename("","","EFF_AREA","","","NAME(South_5h)"); 42 GFilename filename = caldb1.filename("","","EFF_AREA","","","NAME(South_5h)");
  43 +
  44 +**Python**
  45 +
  46 +.. code-block:: python
  47 + :linenos:
  48 +
  49 + filename = caldb1.filename('','','EFF_AREA','','','NAME(South_5h)')
doc/source/users/user_manual/modules/obs/energy.rst
@@ -12,30 +12,28 @@ The code threads below illustrate how an energy of 511 keV can be set using @@ -12,30 +12,28 @@ The code threads below illustrate how an energy of 511 keV can be set using
12 the energy constructor or a dedicated method, and how that energy can be 12 the energy constructor or a dedicated method, and how that energy can be
13 retrieved in units of MeV. 13 retrieved in units of MeV.
14 14
15 -**Python**  
16 -  
17 -.. code-block:: python  
18 - :linenos:  
19 -  
20 - import gammalib # Make GammaLib available  
21 - energy1 = gammalib.GEnergy(511.0,'keV') # Using energy constructor  
22 - energy2 = gammalib.GEnergy()  
23 - energy2.keV(511.0) # Using keV method  
24 - E_MeV1 = energy2('MeV') # Get energy in MeV  
25 - E_MeV2 = energy2.MeV() # Another variant to get energy in MeV  
26 -  
27 **C++** 15 **C++**
28 16
29 .. code-block:: cpp 17 .. code-block:: cpp
30 :linenos: 18 :linenos:
31 19
32 - #include "GammaLib.hpp" // Make GammaLib available  
33 GEnergy energy1(511.0,"keV"); // Using energy constructor 20 GEnergy energy1(511.0,"keV"); // Using energy constructor
34 GEnergy energy2; 21 GEnergy energy2;
35 energy2.keV(511.0); // Using keV method 22 energy2.keV(511.0); // Using keV method
36 double E_MeV1 = energy2("MeV"); // Get energy in MeV 23 double E_MeV1 = energy2("MeV"); // Get energy in MeV
37 double E_MeV2 = energy2.MeV(); // Another variant to get energy in MeV 24 double E_MeV2 = energy2.MeV(); // Another variant to get energy in MeV
38 25
  26 +**Python**
  27 +
  28 +.. code-block:: python
  29 + :linenos:
  30 +
  31 + energy1 = gammalib.GEnergy(511.0,'keV') # Using energy constructor
  32 + energy2 = gammalib.GEnergy()
  33 + energy2.keV(511.0) # Using keV method
  34 + E_MeV1 = energy2('MeV') # Get energy in MeV
  35 + E_MeV2 = energy2.MeV() # Another variant to get energy in MeV
  36 +
39 Energies can be added and subtracted, or multiplied or divided by a floating 37 Energies can be added and subtracted, or multiplied or divided by a floating
40 point value. 38 point value.
41 In addition, two energies can be divided, resulting in a floating point value. 39 In addition, two energies can be divided, resulting in a floating point value.
@@ -45,30 +43,28 @@ Energies can be collected by the :doxy:`GEnergies` container class. The threads @@ -45,30 +43,28 @@ Energies can be collected by the :doxy:`GEnergies` container class. The threads
45 below illustrate how energies can be appended or inserted into the 43 below illustrate how energies can be appended or inserted into the
46 :doxy:`GEnergies` container class. 44 :doxy:`GEnergies` container class.
47 45
48 -**Python**  
49 -  
50 -.. code-block:: python  
51 - :linenos:  
52 -  
53 - import gammalib # Make GammaLib available  
54 - energy1 = gammalib.GEnergy(511.0,'keV') # Set first energy  
55 - energy2 = gammalib.GEnergy(1024.0,'keV') # Set second energy  
56 - energies = gammalib.GEnergies() # Create energy container instance  
57 - energies.append(energy1) # Append first energy  
58 - energies.insert(0,energy2) # Insert second energy before first energy  
59 -  
60 **C++** 46 **C++**
61 47
62 .. code-block:: cpp 48 .. code-block:: cpp
63 :linenos: 49 :linenos:
64 50
65 - #include "GammaLib.hpp" // Make GammaLib available  
66 GEnergy energy1(511.0,"keV"); // Set first energy 51 GEnergy energy1(511.0,"keV"); // Set first energy
67 GEnergy energy2(1024.0,"keV"); // Set second energy 52 GEnergy energy2(1024.0,"keV"); // Set second energy
68 GEnergies energies; // Create energy container instance 53 GEnergies energies; // Create energy container instance
69 energies.append(energy1); // Append first energy 54 energies.append(energy1); // Append first energy
70 energies.insert(0,energy2); // Insert second energy before first energy 55 energies.insert(0,energy2); // Insert second energy before first energy
71 56
  57 +**Python**
  58 +
  59 +.. code-block:: python
  60 + :linenos:
  61 +
  62 + energy1 = gammalib.GEnergy(511.0,'keV') # Set first energy
  63 + energy2 = gammalib.GEnergy(1024.0,'keV') # Set second energy
  64 + energies = gammalib.GEnergies() # Create energy container instance
  65 + energies.append(energy1) # Append first energy
  66 + energies.insert(0,energy2) # Insert second energy before first energy
  67 +
72 The energy container can be saved into a file using the :doxy:`GEnergies::save()` 68 The energy container can be saved into a file using the :doxy:`GEnergies::save()`
73 method, and loaded from a file using either the load constructor or the 69 method, and loaded from a file using either the load constructor or the
74 :doxy:`GEnergies::load()` method. 70 :doxy:`GEnergies::load()` method.
doc/source/users/user_manual/modules/obs/xml.rst
@@ -58,47 +58,17 @@ Similar definitions exist for the other instruments. @@ -58,47 +58,17 @@ Similar definitions exist for the other instruments.
58 The code threads below show different variants of how observations can be 58 The code threads below show different variants of how observations can be
59 loaded from or saved into an XML file. 59 loaded from or saved into an XML file.
60 60
61 -**Python**  
62 -  
63 -.. code-block:: python  
64 - :linenos:  
65 -  
66 - import gammalib # Make GammaLib available  
67 - obs = gammalib.GObservations('my_observations.xml') # Construct observations from XML file  
68 - obs.save('my_copied_observations.xml') # Save observations into XML file  
69 -  
70 -.. code-block:: python  
71 - :linenos:  
72 -  
73 - import gammalib # Make GammaLib available  
74 - obs = gammalib.GObservations() # Construct empty observations  
75 - obs.load('my_observations.xml') # Load observations from XML file  
76 - obs.save('my_copied_observations.xml') # Save observations into XML file  
77 -  
78 -.. code-block:: python  
79 - :linenos:  
80 -  
81 - import gammalib # Make GammaLib available  
82 - obs = gammalib.GObservations() # Construct empty observations  
83 - xmlin = gammalib.GXml('my_observations.xml') # Construct GXml instance from XML file  
84 - xmlout = gammalib.GXml() # Construct empty GXml instance  
85 - obs.read(xmlin) # Read observations from GXml instance  
86 - obs.write(xmlout) # Write observations into GXml instance  
87 - xmlout.save('my_copied_observations.xml') # Save GXml instance in XML file  
88 -  
89 **C++** 61 **C++**
90 62
91 .. code-block:: cpp 63 .. code-block:: cpp
92 :linenos: 64 :linenos:
93 65
94 - #include "GammaLib.hpp" // Make GammaLib available  
95 GObservations obs("my_observations.xml"); // Construct observations from XML file 66 GObservations obs("my_observations.xml"); // Construct observations from XML file
96 obs.save("my_copied_observations.xml"); // Save observations into XML file 67 obs.save("my_copied_observations.xml"); // Save observations into XML file
97 68
98 .. code-block:: cpp 69 .. code-block:: cpp
99 :linenos: 70 :linenos:
100 71
101 - #include "GammaLib.hpp" // Make GammaLib available  
102 GObservations obs; // Construct empty observations 72 GObservations obs; // Construct empty observations
103 obs.load("my_observations.xml"); // Load observations from XML file 73 obs.load("my_observations.xml"); // Load observations from XML file
104 obs.save("my_copied_observations.xml"); // Save observations into XML file 74 obs.save("my_copied_observations.xml"); // Save observations into XML file
@@ -106,10 +76,34 @@ loaded from or saved into an XML file. @@ -106,10 +76,34 @@ loaded from or saved into an XML file.
106 .. code-block:: cpp 76 .. code-block:: cpp
107 :linenos: 77 :linenos:
108 78
109 - #include "GammaLib.hpp" // Make GammaLib available  
110 GObservations obs; // Construct empty observations 79 GObservations obs; // Construct empty observations
111 GXml xmlin("my_observations.xml"); // Construct GXml instance from XML file 80 GXml xmlin("my_observations.xml"); // Construct GXml instance from XML file
112 GXml xmlout; // Construct empty GXml instance 81 GXml xmlout; // Construct empty GXml instance
113 obs.read(xmlin); // Read observations from GXml instance 82 obs.read(xmlin); // Read observations from GXml instance
114 obs.write(xmlout); // Write observations into GXml instance 83 obs.write(xmlout); // Write observations into GXml instance
115 xmlout.save("my_copied_observations.xml"); // Save GXml instance in XML file 84 xmlout.save("my_copied_observations.xml"); // Save GXml instance in XML file
  85 +
  86 +**Python**
  87 +
  88 +.. code-block:: python
  89 + :linenos:
  90 +
  91 + obs = gammalib.GObservations('my_observations.xml') # Construct observations from XML file
  92 + obs.save('my_copied_observations.xml') # Save observations into XML file
  93 +
  94 +.. code-block:: python
  95 + :linenos:
  96 +
  97 + obs = gammalib.GObservations() # Construct empty observations
  98 + obs.load('my_observations.xml') # Load observations from XML file
  99 + obs.save('my_copied_observations.xml') # Save observations into XML file
  100 +
  101 +.. code-block:: python
  102 + :linenos:
  103 +
  104 + obs = gammalib.GObservations() # Construct empty observations
  105 + xmlin = gammalib.GXml('my_observations.xml') # Construct GXml instance from XML file
  106 + xmlout = gammalib.GXml() # Construct empty GXml instance
  107 + obs.read(xmlin) # Read observations from GXml instance
  108 + obs.write(xmlout) # Write observations into GXml instance
  109 + xmlout.save('my_copied_observations.xml') # Save GXml instance in XML file
doc/source/users/user_manual/modules/support/interpolation.rst
@@ -7,19 +7,6 @@ used to describe a functional relation :math:`y_i=f(x_i)`. The following @@ -7,19 +7,6 @@ used to describe a functional relation :math:`y_i=f(x_i)`. The following
7 code illustrates how the :doxy:`GNodeArray` class is used 7 code illustrates how the :doxy:`GNodeArray` class is used
8 (see ``examples/cpp/interpolate/interpolate.cpp`` for the source code): 8 (see ``examples/cpp/interpolate/interpolate.cpp`` for the source code):
9 9
10 -**Python**  
11 -  
12 -.. code-block:: python  
13 - :linenos:  
14 -  
15 - x_i = [1.0, 4.0, 6.0]  
16 - y_i = [8.0, 7.0, 2.0]  
17 - nodes = gammalib.GNodeArray(x_i)  
18 - for x in range(20):  
19 - nodes.set_value(x*0.5)  
20 - y = y_i[nodes.inx_left()] * nodes.wgt_left() + y_i[nodes.inx_right()] * nodes.wgt_right()  
21 - print('x=%f : y=%f' % (x, y))  
22 -  
23 **C++** 10 **C++**
24 11
25 .. code-block:: cpp 12 .. code-block:: cpp
@@ -34,6 +21,20 @@ code illustrates how the :doxy:`GNodeArray` class is used @@ -34,6 +21,20 @@ code illustrates how the :doxy:`GNodeArray` class is used
34 std::cout << "x=" << x << " : y=" << y << std::endl; 21 std::cout << "x=" << x << " : y=" << y << std::endl;
35 } 22 }
36 23
  24 +**Python**
  25 +
  26 +.. code-block:: python
  27 + :linenos:
  28 +
  29 + x_i = [1.0, 4.0, 6.0]
  30 + y_i = [8.0, 7.0, 2.0]
  31 + nodes = gammalib.GNodeArray(x_i)
  32 + for x in range(20):
  33 + nodes.set_value(x*0.5)
  34 + y = y_i[nodes.inx_left()] * nodes.wgt_left() + y_i[nodes.inx_right()] * nodes.wgt_right()
  35 + print('x=%f : y=%f' % (x, y))
  36 +
  37 +
37 In line 1, the nodes :math:`x_i` at which the function values :math:`y_i` 38 In line 1, the nodes :math:`x_i` at which the function values :math:`y_i`
38 are given are declared, the actual function values :math:`y_i` are 39 are given are declared, the actual function values :math:`y_i` are
39 declared in line 2. In line 3, a node array is constructed from the 40 declared in line 2. In line 3, a node array is constructed from the
doc/source/users/user_manual/modules/support/media.rst
@@ -14,18 +14,6 @@ media is implemented by the :doxy:`GUrlString` class. @@ -14,18 +14,6 @@ media is implemented by the :doxy:`GUrlString` class.
14 An example of a class making using of :doxy:`GUrl` is the :doxy:`GXml` class. Look 14 An example of a class making using of :doxy:`GUrl` is the :doxy:`GXml` class. Look
15 at the following code: 15 at the following code:
16 16
17 -**Python**  
18 -  
19 -.. code-block:: python  
20 - :linenos:  
21 -  
22 - xml = gammalib.GXml()  
23 - xml.append(gammalib.GXmlElement('dummy'))  
24 - file = gammalib.GUrlFile('my_file.xml', 'w')  
25 - chain = gammalib.GUrlString()  
26 - xml.write(file)  
27 - xml.write(chain)  
28 -  
29 **C++** 17 **C++**
30 18
31 .. code-block:: cpp 19 .. code-block:: cpp
@@ -38,6 +26,18 @@ at the following code: @@ -38,6 +26,18 @@ at the following code:
38 xml.write(file); 26 xml.write(file);
39 xml.write(chain); 27 xml.write(chain);
40 28
  29 +**Python**
  30 +
  31 +.. code-block:: python
  32 + :linenos:
  33 +
  34 + xml = gammalib.GXml()
  35 + xml.append(gammalib.GXmlElement('dummy'))
  36 + file = gammalib.GUrlFile('my_file.xml', 'w')
  37 + chain = gammalib.GUrlString()
  38 + xml.write(file)
  39 + xml.write(chain)
  40 +
41 Line 1 declares a XML object and in line 2 we append a dummy element 41 Line 1 declares a XML object and in line 2 we append a dummy element
42 to it. In line 3 we now create a file named ``my_file.xml`` for which 42 to it. In line 3 we now create a file named ``my_file.xml`` for which
43 we allow write access. In line 4 we allocate a string media. We then 43 we allow write access. In line 4 we allocate a string media. We then
doc/source/users/user_manual/modules/support/random.rst
@@ -4,17 +4,6 @@ Random number generation @@ -4,17 +4,6 @@ Random number generation
4 Random number generation is widely used within GammaLib for drawing event 4 Random number generation is widely used within GammaLib for drawing event
5 distributions from functions. 5 distributions from functions.
6 6
7 -**Python**  
8 -  
9 -.. code-block:: python  
10 - :linenos:  
11 -  
12 - ran = gammalib.GRan() # Construct random number generate instance  
13 - uniform = ran.uniform() # Uniform random number  
14 - exponential = ran.exp(3.7) # Exponential random number  
15 - poisson = ran.poisson(2.4) # Poisson random number  
16 - chi2 = ran.chisq2() # Chi2 random number  
17 -  
18 **C++** 7 **C++**
19 8
20 .. code-block:: cpp 9 .. code-block:: cpp
@@ -26,17 +15,20 @@ distributions from functions. @@ -26,17 +15,20 @@ distributions from functions.
26 double poisson = ran.poisson(2.4); // Poisson random number 15 double poisson = ran.poisson(2.4); // Poisson random number
27 double chi2 = ran.chisq2(); // Chi2 random number 16 double chi2 = ran.chisq2(); // Chi2 random number
28 17
29 -In line 1 a random number generator is allocated. If control over the  
30 -seed value of the random number generator is needed (for example to draw  
31 -different samples), you may specify the seed value upon construction:  
32 -  
33 **Python** 18 **Python**
34 19
35 .. code-block:: python 20 .. code-block:: python
36 :linenos: 21 :linenos:
37 22
38 - seed = 123456  
39 - ran = gammalib.GRan(seed) 23 + ran = gammalib.GRan() # Construct random number generate instance
  24 + uniform = ran.uniform() # Uniform random number
  25 + exponential = ran.exp(3.7) # Exponential random number
  26 + poisson = ran.poisson(2.4) # Poisson random number
  27 + chi2 = ran.chisq2() # Chi2 random number
  28 +
  29 +In line 1 a random number generator is allocated. If control over the
  30 +seed value of the random number generator is needed (for example to draw
  31 +different samples), you may specify the seed value upon construction:
40 32
41 **C++** 33 **C++**
42 34
@@ -46,6 +38,14 @@ different samples), you may specify the seed value upon construction: @@ -46,6 +38,14 @@ different samples), you may specify the seed value upon construction:
46 unsigned long long int seed = 123456; 38 unsigned long long int seed = 123456;
47 GRan ran(seed); 39 GRan ran(seed);
48 40
  41 +**Python**
  42 +
  43 +.. code-block:: python
  44 + :linenos:
  45 +
  46 + seed = 123456
  47 + ran = gammalib.GRan(seed)
  48 +
49 The :doxy:`GRan::uniform` method returns a random number between 0 and 1. The 49 The :doxy:`GRan::uniform` method returns a random number between 0 and 1. The
50 :doxy:`GRan::exp` method returns a random number of the exponential law 50 :doxy:`GRan::exp` method returns a random number of the exponential law
51 51