Пример #1
0
import asyncio
import pathlib

import pandas as pd
import numpy as np

from liso import (
    EuXFELInterface, Linac, LinacScan, MachineScan,
    open_run, open_sim, Phasespace
)
from liso import doocs_channels as dc
from liso.experiment import machine
from liso.experiment.machine import _DoocsReader
from liso.io import ExpWriter
from liso.logging import logger
logger.setLevel('ERROR')

from ...experiment.tests import DoocsDataGenerator as ddgen


_ROOT_DIR = osp.dirname(osp.abspath(__file__))
_INPUT_DIR = osp.join(_ROOT_DIR, "../../simulation/tests")


class TestLinacScan(unittest.TestCase):
    def run(self, result=None):
        with tempfile.TemporaryDirectory() as tmp_dir:
            self._tmp_dir = tmp_dir
            linac = Linac(2000)
            linac.add_beamline(
                'astra',
Пример #2
0
python astra_basic.py --workers <number of cpu cores>
```

The solution of running the following code with space-charge effect is
    emitx_um    = 0.3195 
at
    laser_spot  = 0.1189
    main_sole_b = 0.2187


Author: Jun Zhu
"""
from liso import Linac, LinacOptimization, NelderMead
from liso.logging import logger

logger.setLevel('DEBUG')

linac = Linac()  # instantiate a Linac

# add a beamline
#
# The first argument is the code name
# name: beamline name
# swd: simulation working directory
# fin: simulation input file name
# template: simulation input template file path.
# pout: output file name. It must be in the same folder as 'fin'.
linac.add_beamline('astra',
                   name='gun',
                   swd='../astra_files',
                   fin='injector.in',
Пример #3
0
import unittest
from unittest.mock import patch

import numpy as np

from liso import EuXFELInterface
from liso import doocs_channels as dc
from liso.exceptions import LisoRuntimeError
from liso.experiment import machine
from liso.experiment.machine import _DoocsReader, _DoocsWriter
from liso.logging import logger
logger.setLevel("ERROR")

from . import DoocsDataGenerator as ddgen

_PID0 = 1000


def _side_effect_read(dataset, address, error=0):
    data = dataset[address]
    if data['macropulse'] >= _PID0:
        if np.random.rand() > 0.5:
            data['macropulse'] += 1
            # do not mutate
            data['data'] = data['data'] + error
    return data


class TestDoocsMachine(unittest.TestCase):
    def run(self, result=None):
        DELAY_NO_EVENT = _DoocsReader._DELAY_NO_EVENT