removed pycache

This commit is contained in:
Erik Frojdh 2019-03-15 17:59:36 +01:00
parent 3356c2d3f6
commit c0d5303b70
38 changed files with 153 additions and 86 deletions

5
.gitignore vendored
View File

@ -10,3 +10,8 @@ bin/
build
docs/
RELEASE.txt
*.pyc
*/__pycache__/*

View File

@ -6,7 +6,6 @@ os: linux
env:
matrix:
- CONDA_PY=3.5
- CONDA_PY=3.6
- CONDA_PY=3.7

View File

@ -36,7 +36,6 @@ option (SLS_USE_RECEIVER "Receiver" OFF)
option (SLS_USE_GUI "GUI" OFF)
option (SLS_USE_TESTS "TESTS" ON)
option (SLS_USE_INTEGRATION_TESTS "Integration Tests" ON)
option(SLS_USE_SANITIZER "Sanitizers for debugging" OFF)
option(SLS_USE_PYTHON "Python bindings" OFF)

View File

@ -20,6 +20,7 @@ set( PYTHON_FILES
detector.py
eiger.py
errors.py
experimental.py
jungfrau_ctb.py
jungfrau.py
registers.py
@ -34,3 +35,5 @@ foreach(FILE ${PYTHON_FILES})
endforeach(FILE ${PYTHON_FILES})
configure_file( scripts/basic.py
${CMAKE_BINARY_DIR}/basic.py )

View File

@ -89,7 +89,8 @@ def test_zero_period_with_acq(eiger):
eiger.exposure_time = 0.001
eiger.period = t
eiger.file_write = False
eiger.acq()
eiger.start_detector()
eiger.stop_detector()
# Register 0x5 holds period
reg = eiger.register[0x5]

View File

@ -65,16 +65,16 @@ def test_rx_tcpport(eiger):
eiger.acq()
assert eiger.frames_caught == 1
@eigertest
@pytest.mark.new
def test_enable_disable_tengiga(eiger):
"""
This test does not check for dat on the 10Gbit link, only the set and get functions
"""
eiger.tengiga = True
assert eiger.tengiga == True
eiger.tengiga = False
assert eiger.tengiga == False
# @eigertest
# @pytest.mark.new
# def test_enable_disable_tengiga(eiger):
# """
# This test does not check for dat on the 10Gbit link, only the set and get functions
# """
# eiger.tengiga = True
# assert eiger.tengiga == True
# eiger.tengiga = False
# assert eiger.tengiga == False

View File

@ -1,5 +1,6 @@
from .detector import Detector, DetectorError, free_shared_memory
from .eiger import Eiger
from .experimental import ExperimentalDetector
from .jungfrau import Jungfrau
from .jungfrau_ctb import JungfrauCTB
from _sls_detector import DetectorApi

View File

@ -1069,7 +1069,7 @@ class Detector:
@property
@error_handling
def rx_tcpport(self):
return [self._api.getRxTcpport(i) for i in range(self.n_modules)]
return self._api.getReceiverPort()
@rx_tcpport.setter
@error_handling
@ -1079,7 +1079,7 @@ class Detector:
'detectors: {}'.format(len(ports), len(self)))
else:
for i, p in enumerate(ports):
self._api.setRxTcpport(i, p)
self._api.setReceiverPort(i, p)
@property
@error_handling

View File

@ -455,8 +455,8 @@ class Eiger(Detector):
d.rx_udpport = [50010, 50011, 50012, 50013]
"""
p0 = self._api.getNetworkParameter('rx_udpport')
p1 = self._api.getNetworkParameter('rx_udpport2')
p0 = self._api.getReceiverUDPPort()
p1 = self._api.getReceiverUDPPort2()
return [int(val) for pair in zip(p0, p1) for val in pair]
@rx_udpport.setter
@ -465,8 +465,8 @@ class Eiger(Detector):
"""Requires iterating over elements two and two for setting ports"""
a = iter(ports)
for i, p in enumerate(zip(a, a)):
self._api.setNetworkParameter('rx_udpport', str(p[0]), i)
self._api.setNetworkParameter('rx_udpport2', str(p[1]), i)
self._api.setReceiverUDPPort(p[0], i)
self._api.setReceiverUDPPort2(p[1], i)
@property
@error_handling
@ -481,7 +481,7 @@ class Eiger(Detector):
"""
_s = self._api.getNetworkParameter('rx_zmqport')
_s = self._api.getReceiverStreamingPort()
if _s == '':
return []
else:
@ -492,9 +492,9 @@ class Eiger(Detector):
def rx_zmqport(self, port):
if isinstance(port, Iterable):
for i, p in enumerate(port):
self._api.setNetworkParameter('rx_zmqport', str(p), i)
self._api.setReceiverStreamingPort(p, i)
else:
self._api.setNetworkParameter('rx_zmqport', str(port), -1)
self._api.setReceiverStreamingPort(port, -1)
@property

View File

@ -19,7 +19,7 @@ class Detector {
Detector(int i)
: det(i), multi_detector_id(i) {
//Disable output from std::cout
std::cout.setstate(std::ios_base::failbit);
// std::cout.setstate(std::ios_base::failbit);
}
int getMultiDetectorId() { return multi_detector_id; }
@ -42,7 +42,7 @@ class Detector {
//for Eiger check status of the module
//true active false deactivated
bool getActive(int i){
bool getActive(int i) {
return det.activate(-1, i);
}
//activate or deactivate a module
@ -58,31 +58,29 @@ class Detector {
return det.getFramesCaughtByReceiver(i);
}
void setReceiverFifoDepth(int n_frames){
void setReceiverFifoDepth(int n_frames) {
det.setReceiverFifoDepth(n_frames);
}
void setNumberOfStorageCells(const int64_t num) {
det.setTimer(slsDetectorDefs::timerIndex::STORAGE_CELL_NUMBER, num);
}
int getNumberOfStorageCells(){
int getNumberOfStorageCells() {
return det.setTimer(slsDetectorDefs::timerIndex::STORAGE_CELL_NUMBER, -1);
}
void setStoragecellStart(int cell){
void setStoragecellStart(int cell) {
det.setStoragecellStart(cell);
}
int getStoragecellStart(){
int getStoragecellStart() {
return det.setStoragecellStart();
}
int getReceiverFifoDepth(){
int getReceiverFifoDepth() {
return det.setReceiverFifoDepth();
}
void resetFramesCaught() {
det.resetFramesCaught();
}
@ -91,18 +89,17 @@ class Detector {
return det.getReceiverCurrentFrameIndex();
}
void startReceiver() { det.startReceiver(); }
void stopReceiver() { det.stopReceiver(); }
bool getTenGigabitEthernet() {
return det.enableTenGigabitEthernet();
}
void setTenGigabitEthernet(const bool value) {
void setTenGigabitEthernet(bool value) {
det.enableTenGigabitEthernet(value);
}
void setFileFormat(const std::string& format);
void setFileFormat(const std::string &format);
std::string getFileFormat();
std::string checkOnline() {
@ -261,8 +258,8 @@ class Detector {
int getDbitClock() {
return det.setSpeed(slsDetectorDefs::DBIT_CLOCK, -1);
}
int getReceiverPort(int det_id){
return det.setReceiverPort(-1, det_id);
std::vector<int> getReceiverPort() const {
return det.getReceiverPort();
}
void setReceiverPort(int det_id, int value) {
@ -276,11 +273,11 @@ class Detector {
std::vector<double> getRateCorrection();
bool getFlippedDataX(int i){
bool getFlippedDataX(int i) {
return det.getFlippedData(slsDetectorDefs::dimension::X, i);
}
bool getFlippedDataY(int i){
bool getFlippedDataY(int i) {
return det.getFlippedData(slsDetectorDefs::dimension::Y, i);
}
@ -308,7 +305,7 @@ class Detector {
std::string getFilePath() {
return det.getFilePath();
}
std::string getFilePath(int i){
std::string getFilePath(int i) {
return det.getFilePath(i);
}
@ -611,16 +608,14 @@ class Detector {
return det.enableWriteToFile(-1);
}
void setFileOverWrite(bool value){
void setFileOverWrite(bool value) {
det.overwriteFile(value);
}
bool getFileOverWrite(){
bool getFileOverWrite() {
return det.overwriteFile(-1);
}
void setAllTrimbits(int tb) {
det.setAllTrimbits(tb);
}
@ -635,16 +630,46 @@ class Detector {
det.enableDataStreamingFromReceiver(state);
}
// //Get a network parameter for all detectors, looping over individual detectors
// //return a vector of strings
// std::vector<std::string> getDetectorNetworkParameter(std::string par_name) {
// auto p = networkNameToEnum(par_name);
// std::vector<std::string> par;
// for (int i = 0; i < det.getNumberOfDetectors(); ++i) {
// par.push_back(det.setDetectorNetworkParameter(p, -1, i));
// }
// return par;
// }
//Get a network parameter for all detectors, looping over individual detectors
//return a vector of strings
std::vector<int> getReceiverStreamingPort() {
std::vector<int> vec;
vec.reserve(det.getNumberOfDetectors());
for (int i = 0; i < det.getNumberOfDetectors(); ++i) {
vec.push_back(det.getReceiverStreamingPort(i));
}
return vec;
}
void setReceiverStreamingPort(int value, int det_id) {
det.setReceiverDataStreamingOutPort(value, det_id);
}
std::vector<int> getReceiverUDPPort() {
std::vector<int> vec;
vec.reserve(det.getNumberOfDetectors());
for (int i = 0; i < det.getNumberOfDetectors(); ++i) {
vec.push_back(det.getReceiverUDPPort(i));
}
return vec;
}
std::vector<int> getReceiverUDPPort2() {
std::vector<int> vec;
vec.reserve(det.getNumberOfDetectors());
for (int i = 0; i < det.getNumberOfDetectors(); ++i) {
vec.push_back(det.getReceiverUDPPort2(i));
}
return vec;
}
void setReceiverUDPPort(int port, int det_id){
det.setReceiverUDPPort(port, det_id);
}
void setReceiverUDPPort2(int port, int det_id){
det.setReceiverUDPPort2(port, det_id);
}
// //Set network parameter for all modules if det_id == -1 otherwise the module
// //specified with det_id.
@ -720,31 +745,27 @@ class Detector {
int multi_detector_id = 0;
};
void Detector::setFileFormat(const std::string& format){
if (format == "binary"){
void Detector::setFileFormat(const std::string &format) {
if (format == "binary") {
det.setFileFormat(slsDetectorDefs::fileFormat::BINARY);
}else if(format == "ascii"){
} else if (format == "ascii") {
det.setFileFormat(slsDetectorDefs::fileFormat::ASCII);
}else if(format == "hdf5"){
} else if (format == "hdf5") {
det.setFileFormat(slsDetectorDefs::fileFormat::HDF5);
}
}
std::string Detector::getFileFormat(){
std::string Detector::getFileFormat() {
auto format = det.setFileFormat(slsDetectorDefs::fileFormat::GET_FILE_FORMAT, -1);
switch (format)
{
case slsDetectorDefs::fileFormat::BINARY:
return "binary";
case slsDetectorDefs::fileFormat::ASCII:
return "ascii";
case slsDetectorDefs::fileFormat::HDF5:
return "hdf5";
default:
return "unknown";
switch (format) {
case slsDetectorDefs::fileFormat::BINARY:
return "binary";
case slsDetectorDefs::fileFormat::ASCII:
return "ascii";
case slsDetectorDefs::fileFormat::HDF5:
return "hdf5";
default:
return "unknown";
}
}

View File

@ -43,9 +43,6 @@ PYBIND11_MODULE(_sls_detector, m)
d.n_frames
>> 10
)pbdoc");
DetectorApi
.def(py::init<int>())
@ -180,8 +177,15 @@ PYBIND11_MODULE(_sls_detector, m)
.def("getRxDataStreamStatus", &Detector::getRxDataStreamStatus)
.def("setRxDataStreamStatus", &Detector::setRxDataStreamStatus)
// .def("getDetectorNetworkParameter", &Detector::getDetectorNetworkParameter)
// .def("setDetectorNetworkParameter", &Detector::setDetectorNetworkParameter)
//Network stuff
.def("getReceiverStreamingPort", &Detector::getReceiverStreamingPort)
.def("setReceiverStreamingPort", &Detector::setReceiverStreamingPort)
.def("getReceiverUDPPort", &Detector::getReceiverUDPPort)
.def("getReceiverUDPPort2", &Detector::getReceiverUDPPort2)
.def("getReceiverPort", &Detector::getReceiverPort)
.def("setReceiverPort", &Detector::setReceiverPort)
.def("configureNetworkParameters", &Detector::configureNetworkParameters)
.def("getDelayFrame", &Detector::getDelayFrame)
.def("setDelayFrame", &Detector::setDelayFrame)
@ -222,6 +226,7 @@ PYBIND11_MODULE(_sls_detector, m)
.def("getFramesCaughtByReceiver", (int (Detector::*)() ) & Detector::getFramesCaughtByReceiver)
.def("getFramesCaughtByReceiver", (int (Detector::*)(int)) & Detector::getFramesCaughtByReceiver)
.def("resetFramesCaught", &Detector::resetFramesCaught)
.def("getReceiverCurrentFrameIndex", &Detector::getReceiverCurrentFrameIndex)
.def("getGapPixels", &Detector::getGapPixels)
@ -259,6 +264,22 @@ PYBIND11_MODULE(_sls_detector, m)
.def("getNumberOfDetectors", &Detector::getNumberOfDetectors)
.def("getDetectorGeometry", &Detector::getDetectorGeometry);
//Experimental API to use the multi directly and inherit from to reduce
//code duplication need to investigate how to handle documentation
py::class_<multiSlsDetector> multiDetectorApi(m, "multiDetectorApi");
multiDetectorApi
.def(py::init<int>())
.def_property("busy",
py::cpp_function(&multiSlsDetector::getAcquiringFlag),
py::cpp_function(&multiSlsDetector::setAcquiringFlag))
.def_property_readonly("rx_tcpport",
py::cpp_function(&multiSlsDetector::getReceiverPort))
;
#ifdef VERSION_INFO
m.attr("__version__") = VERSION_INFO;
#else

View File

@ -72,6 +72,23 @@ multiSlsDetector::parallelCall(RT (slsDetector::*somefunc)(CT...), typename NonD
return result;
}
//Const qualified version
template <typename RT, typename... CT>
std::vector<RT>
multiSlsDetector::parallelCall(RT (slsDetector::*somefunc)(CT...), typename NonDeduced<CT>::type... Args) const{
std::vector<std::future<RT>> futures;
for (auto &d : detectors) {
futures.push_back(
std::async(std::launch::async, somefunc, d.get(), Args...));
}
std::vector<RT> result;
result.reserve(detectors.size());
for (auto &i : futures) {
result.push_back(i.get());
}
return result;
}
int multiSlsDetector::decodeNChannel(int offsetX, int offsetY, int &channelX,
int &channelY) {
channelX = -1;
@ -748,6 +765,10 @@ int multiSlsDetector::setReceiverPort(int port_number, int detPos) {
return sls::minusOneIfDifferent(r);
}
std::vector<int> multiSlsDetector::getReceiverPort() const{
return parallelCall(&slsDetector::setReceiverPort, -1);
}
int multiSlsDetector::lockServer(int p, int detPos) {
// single
if (detPos >= 0) {

View File

@ -153,16 +153,10 @@ class multiSlsDetector : public virtual slsDetectorDefs,
std::vector<RT> parallelCall(RT (slsDetector::*somefunc)(CT...),
typename NonDeduced<CT>::type... Args);
/**
* If specific position, then provide result with that detector at position
* pos else concatenate the result of all detectors
* @param somefunc function pointer
* @param pos positin of detector in array (-1 is for all)
* @returns result for detector at that position or concatenated string of
* all detectors
*/
// std::string concatResultOrPos(std::string (slsDetector::*somefunc)(int),
// int pos);
//Const qualified version
template <typename RT, typename... CT>
std::vector<RT> parallelCall(RT (slsDetector::*somefunc)(CT...),
typename NonDeduced<CT>::type... Args) const;
/**
* Decodes which detector and the corresponding channel numbers for it
@ -440,6 +434,8 @@ class multiSlsDetector : public virtual slsDetectorDefs,
*/
int setReceiverPort(int port_number = -1, int detPos = -1);
std::vector<int> getReceiverPort() const;
/**
* Lock server for this client IP
* @param p 0 to unlock, 1 to lock