diff --git a/.gitignore b/.gitignore index b6e4761..8baa7e9 100644 --- a/.gitignore +++ b/.gitignore @@ -127,3 +127,6 @@ dmypy.json # Pyre type checker .pyre/ + +# text editor backups +*~ \ No newline at end of file diff --git a/__init__.py b/CHAP/__init__.py similarity index 100% rename from __init__.py rename to CHAP/__init__.py diff --git a/CHAP/__main__.py b/CHAP/__main__.py new file mode 100644 index 0000000..324d8a3 --- /dev/null +++ b/CHAP/__main__.py @@ -0,0 +1,4 @@ +from CHAP.runner import main + +if __name__ == '__main__': + main() diff --git a/async.py b/CHAP/async.py similarity index 95% rename from async.py rename to CHAP/async.py index 500f6b1..2347b7a 100755 --- a/async.py +++ b/CHAP/async.py @@ -11,7 +11,7 @@ import asyncio # local modules -from processor import Processor, PrintProcessor +from CHAP.processor import Processor, PrintProcessor async def task(mgr, doc): diff --git a/models/basemodel.py b/CHAP/models/basemodel.py similarity index 100% rename from models/basemodel.py rename to CHAP/models/basemodel.py diff --git a/models/edd.py b/CHAP/models/edd.py similarity index 100% rename from models/edd.py rename to CHAP/models/edd.py diff --git a/models/integration.py b/CHAP/models/integration.py similarity index 93% rename from models/integration.py rename to CHAP/models/integration.py index c019547..c0cd8af 100644 --- a/models/integration.py +++ b/CHAP/models/integration.py @@ -6,13 +6,12 @@ from time import time from typing import Literal, Optional -from msnctools.general import input_menu -from multiprocessing.pool import ThreadPool -from nexusformat.nexus import (NXdata, - NXdetector, - NXfield, - NXprocess, - NXroot) +# from multiprocessing.pool import ThreadPool +# from nexusformat.nexus import (NXdata, +# NXdetector, +# NXfield, +# NXprocess, +# NXroot) import numpy as np from pydantic import (BaseModel, validator, @@ -21,10 +20,13 @@ conint, confloat, FilePath) -import pyFAI, pyFAI.multi_geometry, pyFAI.units -from pyspec.file.tiff import TiffFile +#import pyFAI, pyFAI.multi_geometry, pyFAI.units +from pyFAI import load as pyfai_load +from pyFAI.multi_geometry import MultiGeometry +from pyFAI.units import AZIMUTHAL_UNITS, RADIAL_UNITS +#from pyspec.file.tiff import TiffFile -from .map import MapConfig, SpecScans +#from .map import MapConfig, SpecScans class Detector(BaseModel): @@ -98,12 +100,14 @@ def mask_array(self): def azimuthal_integrator(poni_file:str): if not isinstance(poni_file, str): poni_file = str(poni_file) - return(pyFAI.load(poni_file)) + return(pyfai_load(poni_file)) @cache def get_mask_array(mask_file:str, poni_file:str): if mask_file is not None: if not isinstance(mask_file, str): mask_file = str(mask_file) + + from pyspec.file.tiff import TiffFile with TiffFile(mask_file) as tiff: mask_array = tiff.asarray() else: @@ -166,10 +170,10 @@ def validate_radial_units(cls, radial_units): :return: validated radial units :rtype: str """ - if radial_units in pyFAI.units.RADIAL_UNITS.keys(): + if radial_units in RADIAL_UNITS.keys(): return(radial_units) else: - raise(ValueError(f'Invalid radial units: {radial_units}. Must be one of {", ".join(pyFAI.units.RADIAL_UNITS.keys())}')) + raise(ValueError(f'Invalid radial units: {radial_units}. Must be one of {", ".join(RADIAL_UNITS.keys())}')) @validator('azimuthal_units', allow_reuse=True) def validate_azimuthal_units(cls, azimuthal_units): """ @@ -182,10 +186,10 @@ def validate_azimuthal_units(cls, azimuthal_units): :return: The original supplied value, if is one of the keys in `pyFAI.units.AZIMUTHAL_UNITS`. :rtype: str """ - if azimuthal_units in pyFAI.units.AZIMUTHAL_UNITS.keys(): + if azimuthal_units in AZIMUTHAL_UNITS.keys(): return(azimuthal_units) else: - raise(ValueError(f'Invalid azimuthal units: {azimuthal_units}. Must be one of {", ".join(pyFAI.units.AZIMUTHAL_UNITS.keys())}')) + raise(ValueError(f'Invalid azimuthal units: {azimuthal_units}. Must be one of {", ".join(AZIMUTHAL_UNITS.keys())}')) def validate_range_max(range_name:str): """Validate the maximum value of an integration range. @@ -213,7 +217,7 @@ def _validate_range_max(cls, range_max, values): return(_validate_range_max) _validate_radial_max = validator('radial_max', allow_reuse=True)(validate_range_max('radial')) _validate_azimuthal_max = validator('azimuthal_max', allow_reuse=True)(validate_range_max('azimuthal')) - def validate_for_map_config(self, map_config:MapConfig): + def validate_for_map_config(self, map_config:BaseModel): """ Validate the existence of the detector data file for all scan points in `map_config`. @@ -269,7 +273,7 @@ def get_multi_geometry_integrator(self): radial_range = (self.radial_min, self.radial_max) azimuthal_range = (self.azimuthal_min, self.azimuthal_max) return(get_multi_geometry_integrator(poni_files, self.radial_units, radial_range, azimuthal_range)) - def get_azimuthally_integrated_data(self, spec_scans:SpecScans, scan_number:int, scan_step_index:int): + def get_azimuthally_integrated_data(self, spec_scans:BaseModel, scan_number:int, scan_step_index:int): """Return azimuthally-integrated data for the scan step specified. :param spec_scans: An instance of `SpecScans` containing the scan step requested. @@ -289,7 +293,7 @@ def get_azimuthally_integrated_data(self, spec_scans:SpecScans, scan_number:int, return(result.intensity) else: return(result.intensity, result.sigma) - def get_radially_integrated_data(self, spec_scans:SpecScans, scan_number:int, scan_step_index:int): + def get_radially_integrated_data(self, spec_scans:BaseModel, scan_number:int, scan_step_index:int): """Return radially-integrated data for the scan step specified. :param spec_scans: An instance of `SpecScans` containing the scan step requested. @@ -327,7 +331,7 @@ def get_radially_integrated_data(self, spec_scans:SpecScans, scan_number:int, sc # Get the standard deviation of the summed detectors' intensities sigma = np.sqrt(np.nansum(variance_each_detector, axis=0)) return(I, sigma) - def get_cake_integrated_data(self, spec_scans:SpecScans, scan_number:int, scan_step_index:int): + def get_cake_integrated_data(self, spec_scans:BaseModel, scan_number:int, scan_step_index:int): """Return cake-integrated data for the scan step specified. :param spec_scans: An instance of `SpecScans` containing the scan step requested. @@ -350,7 +354,7 @@ def get_cake_integrated_data(self, spec_scans:SpecScans, scan_number:int, scan_s return(result.intensity) else: return(result.intensity, result.sigma) - def get_integrated_data(self, spec_scans:SpecScans, scan_number:int, scan_step_index:int): + def get_integrated_data(self, spec_scans:BaseModel, scan_number:int, scan_step_index:int): """Return integrated data for the scan step specified. :param spec_scans: An instance of `SpecScans` containing the scan step requested. @@ -471,12 +475,12 @@ def get_multi_geometry_integrator(poni_files:tuple, radial_unit:str, radial_rang """ chi_min, chi_max, chi_offset, chi_disc = get_azimuthal_adjustments(*azimuthal_range) ais = copy.deepcopy(get_azimuthal_integrators(poni_files, chi_offset=chi_offset)) - multi_geometry = pyFAI.multi_geometry.MultiGeometry(ais, - unit=radial_unit, - radial_range=radial_range, - azimuth_range=(chi_min,chi_max), - wavelength=sum([ai.wavelength for ai in ais])/len(ais), - chi_disc=chi_disc) + multi_geometry = MultiGeometry(ais, + unit=radial_unit, + radial_range=radial_range, + azimuth_range=(chi_min,chi_max), + wavelength=sum([ai.wavelength for ai in ais])/len(ais), + chi_disc=chi_disc) return(multi_geometry) @cache def get_integrated_data_coordinates(azimuthal_range:tuple=None, azimuthal_npt:int=None, radial_range:tuple=None, radial_npt:int=None): diff --git a/models/map.py b/CHAP/models/map.py similarity index 100% rename from models/map.py rename to CHAP/models/map.py diff --git a/models/workflow.py b/CHAP/models/workflow.py similarity index 100% rename from models/workflow.py rename to CHAP/models/workflow.py diff --git a/pipeline.py b/CHAP/pipeline.py similarity index 100% rename from pipeline.py rename to CHAP/pipeline.py diff --git a/processor.py b/CHAP/processor.py similarity index 99% rename from processor.py rename to CHAP/processor.py index 1c43407..17ee79f 100755 --- a/processor.py +++ b/CHAP/processor.py @@ -312,7 +312,7 @@ def get_map_config(self, data): :rtype: MapConfig ''' - from models.map import MapConfig + from CHAP.models.map import MapConfig map_config = False if isinstance(data, list): @@ -461,8 +461,8 @@ def get_configs(self, data): self.logger.debug('Getting configuration objects') t0 = time() - from models.map import MapConfig - from models.integration import IntegrationConfig + from CHAP.models.map import MapConfig + from CHAP.models.integration import IntegrationConfig map_config = False integration_config = False @@ -635,7 +635,7 @@ def get_config(self, data): :rtype: MCACeriaCalibrationConfig ''' - from models.edd import MCACeriaCalibrationConfig + from CHAP.models.edd import MCACeriaCalibrationConfig calibration_config = False if isinstance(data, list): @@ -787,8 +787,8 @@ def get_configs(self, data): :rtype: tuple[MapConfig, MCACeriaCalibrationConfig] ''' - from models.map import MapConfig - from models.edd import MCACeriaCalibrationConfig + from CHAP.models.map import MapConfig + from CHAP.models.edd import MCACeriaCalibrationConfig map_config = False calibration_config = False diff --git a/reader.py b/CHAP/reader.py similarity index 100% rename from reader.py rename to CHAP/reader.py diff --git a/runner.py b/CHAP/runner.py similarity index 95% rename from runner.py rename to CHAP/runner.py index 9267440..0ce8300 100755 --- a/runner.py +++ b/CHAP/runner.py @@ -15,7 +15,7 @@ import yaml # local modules -from pipeline import Pipeline +from CHAP.pipeline import Pipeline class OptionParser(): @@ -63,7 +63,7 @@ def runner(opts): name = item kwargs = {} modName, clsName = name.split('.') - module = __import__(modName) + module = __import__(f'CHAP.{modName}', fromlist=[clsName]) obj = getattr(module, clsName)() obj.logger.setLevel(log_level) obj.logger.addHandler(log_handler) diff --git a/writer.py b/CHAP/writer.py similarity index 100% rename from writer.py rename to CHAP/writer.py diff --git a/data.csv b/data.csv deleted file mode 100644 index db88c40..0000000 --- a/data.csv +++ /dev/null @@ -1,3 +0,0 @@ -col1,col2 -1,2 -2,3 diff --git a/environment.yml b/environment.yml deleted file mode 100644 index 7e9c0f7..0000000 --- a/environment.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: ChessPipeline -channels: - - defaults - - conda-forge - - hexrd - # - file://path/to/custom/msnctools/channel # path is on the CLASSE filesystem. -dependencies: - - msnctools==2023.1.3 - - xarray==2023.2.0 - - nexusformat==0.7.8 - - pydantic==1.10.4 - - pyfai==2023.1.0 - - hexrd==0.8.19 - - xrayutilities==1.7.4 \ No newline at end of file diff --git a/edd/ceria_calibration_config.yaml b/examples/edd/ceria_calibration_config.yaml similarity index 61% rename from edd/ceria_calibration_config.yaml rename to examples/edd/ceria_calibration_config.yaml index a6b4294..add5f53 100644 --- a/edd/ceria_calibration_config.yaml +++ b/examples/edd/ceria_calibration_config.yaml @@ -1,13 +1,13 @@ -spec_file: edd/ceria_2222-2/spec.log +spec_file: examples/edd/ceria_2222-2/spec.log scan_number: 1 -flux_file: edd/flux.dft +flux_file: examples/edd/flux.dft detector_name: mca1 num_bins: 2048 max_energy_kev: 150 -hexrd_h5_material_file: edd/materials.h5 +hexrd_h5_material_file: examples/edd/materials.h5 tth_max: 90.0 hkl_tth_tol: 0.15 diff --git a/edd/map.yaml b/examples/edd/map.yaml similarity index 84% rename from edd/map.yaml rename to examples/edd/map.yaml index 670bf01..fda7c46 100644 --- a/edd/map.yaml +++ b/examples/edd/map.yaml @@ -4,7 +4,7 @@ experiment_type: EDD sample: name: set2_c1-1 spec_scans: - - spec_file: edd/set2_c1-1/spec.log + - spec_file: examples/edd/set2_c1-1/spec.log scan_numbers: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] independent_dimensions: - label: sample_y diff --git a/edd/pipeline.yaml b/examples/edd/pipeline.yaml similarity index 67% rename from edd/pipeline.yaml rename to examples/edd/pipeline.yaml index 5542499..8fcfbe9 100644 --- a/edd/pipeline.yaml +++ b/examples/edd/pipeline.yaml @@ -7,41 +7,41 @@ pipeline: PRIVATE-TOKEN: # your token here - processor.URLResponseProcessor - writer.ExtractArchiveWriter: - filename: edd + filename: examples/edd # Calibrate detector - reader.YAMLReader: - filename: edd/ceria_calibration_config.yaml + filename: examples/edd/ceria_calibration_config.yaml schema: MCACeriaCalibrationConfig - processor.MCACeriaCalibrationProcessor - writer.YAMLWriter: - filename: edd/ceria_calibrated.yaml + filename: examples/edd/ceria_calibrated.yaml force_overwrite: true # Gather calibrated detector data - reader.MultipleReader: readers: - YAMLReader: - filename: edd/map.yaml + filename: examples/edd/map.yaml schema: MapConfig - YAMLReader: - filename: edd/ceria_calibrated.yaml + filename: examples/edd/ceria_calibrated.yaml schema: MCACeriaCalibrationConfig - processor.MCADataProcessor - writer.NexusWriter: - filename: edd/map_detector_data.nxs + filename: examples/edd/map_detector_data.nxs force_overwrite: true # Compute sample strain map - reader.MultipleReader: readers: + - NexusReader: + filename: examples/edd/map_detector_data.nxs - YAMLReader: - filename: edd/map_detector_data.nxs - - YAMLReader: - filename: edd/strain_analysis_config.yaml + filename: examples/edd/strain_analysis_config.yaml schema: StrainAnalysisConfig - processor.StrainAnalysisProcessor - writer.YAMLWriter: - filename: edd/map_strain_data.yaml + filename: examples/edd/map_strain_data.yaml force_overwrite: true diff --git a/edd/strain_analysis_config.yaml b/examples/edd/strain_analysis_config.yaml similarity index 80% rename from edd/strain_analysis_config.yaml rename to examples/edd/strain_analysis_config.yaml index d408473..3377d0c 100644 --- a/edd/strain_analysis_config.yaml +++ b/examples/edd/strain_analysis_config.yaml @@ -3,7 +3,7 @@ energy_range: - 112 lattice_parameters: - 5.41153 -material_file: materials.h5 +material_file: examples/edd/materials.h5 material_name: CeO2 selected_peaks: - 3 diff --git a/inference/pipeline.yaml b/examples/inference/pipeline.yaml similarity index 81% rename from inference/pipeline.yaml rename to examples/inference/pipeline.yaml index 9dc53d6..e60c4ed 100644 --- a/inference/pipeline.yaml +++ b/examples/inference/pipeline.yaml @@ -6,4 +6,4 @@ pipeline: model: mnist verbose: true - writer.Writer: - filename: predictions.json + filename: examples/inference/predictions.json diff --git a/saxswaxs/integration_saxs_azimuthal.yaml b/examples/saxswaxs/integration_saxs_azimuthal.yaml similarity index 76% rename from saxswaxs/integration_saxs_azimuthal.yaml rename to examples/saxswaxs/integration_saxs_azimuthal.yaml index 4a43937..93dd4c0 100644 --- a/saxswaxs/integration_saxs_azimuthal.yaml +++ b/examples/saxswaxs/integration_saxs_azimuthal.yaml @@ -3,8 +3,8 @@ title: saxs_azimuthal integration_type: azimuthal detectors: - prefix: PIL5 - poni_file: saxswaxs/PIL5.poni - mask_file: saxswaxs/PIL5.tif + poni_file: examples/saxswaxs/PIL5.poni + mask_file: examples/saxswaxs/PIL5.tif radial_units: q_A^-1 radial_min: 0.0 radial_max: 0.21821 diff --git a/saxswaxs/integration_waxs_azimuthal.yaml b/examples/saxswaxs/integration_waxs_azimuthal.yaml similarity index 62% rename from saxswaxs/integration_waxs_azimuthal.yaml rename to examples/saxswaxs/integration_waxs_azimuthal.yaml index 6b1b93d..d9d586e 100644 --- a/saxswaxs/integration_waxs_azimuthal.yaml +++ b/examples/saxswaxs/integration_waxs_azimuthal.yaml @@ -3,11 +3,11 @@ title: waxs_azimuthal integration_type: azimuthal detectors: - prefix: PIL9 - poni_file: saxswaxs/PIL9.poni - mask_file: saxswaxs/PIL9.tif + poni_file: examples/saxswaxs/PIL9.poni + mask_file: examples/saxswaxs/PIL9.tif - prefix: PIL11 - poni_file: saxswaxs/PIL11.poni - mask_file: saxswaxs/PIL11.tif + poni_file: examples/saxswaxs/PIL11.poni + mask_file: examples/saxswaxs/PIL11.tif radial_units: q_A^-1 radial_min: 0.0 radial_max: 3.33209 diff --git a/saxswaxs/map_1d.yaml b/examples/saxswaxs/map_1d.yaml similarity index 90% rename from saxswaxs/map_1d.yaml rename to examples/saxswaxs/map_1d.yaml index 4b6ece7..0c7672b 100644 --- a/saxswaxs/map_1d.yaml +++ b/examples/saxswaxs/map_1d.yaml @@ -4,7 +4,7 @@ experiment_type: SAXSWAXS sample: name: sample_14_align spec_scans: -- spec_file: saxswaxs/test_1d +- spec_file: examples/saxswaxs/test_1d scan_numbers: - 1 independent_dimensions: diff --git a/saxswaxs/map_2d.yaml b/examples/saxswaxs/map_2d.yaml similarity index 91% rename from saxswaxs/map_2d.yaml rename to examples/saxswaxs/map_2d.yaml index 17218f3..df12d96 100644 --- a/saxswaxs/map_2d.yaml +++ b/examples/saxswaxs/map_2d.yaml @@ -4,7 +4,7 @@ experiment_type: SAXSWAXS sample: name: sample_14 spec_scans: -- spec_file: saxswaxs/test_2d +- spec_file: examples/saxswaxs/test_2d scan_numbers: - 1 independent_dimensions: diff --git a/saxswaxs/pipeline.yaml b/examples/saxswaxs/pipeline.yaml similarity index 69% rename from saxswaxs/pipeline.yaml rename to examples/saxswaxs/pipeline.yaml index e23978f..a340875 100644 --- a/saxswaxs/pipeline.yaml +++ b/examples/saxswaxs/pipeline.yaml @@ -7,27 +7,27 @@ pipeline: PRIVATE-TOKEN: # your token here - processor.URLResponseProcessor - writer.ExtractArchiveWriter: - filename: saxswaxs + filename: examples/saxswaxs # Collect map data - reader.YAMLReader: - filename: saxswaxs/map_1d.yaml + filename: examples/saxswaxs/map_1d.yaml schema: MapConfig - processor.MapProcessor - writer.NexusWriter: - filename: saxswaxs/saxswaxs_map.nxs + filename: examples/saxswaxs/saxswaxs_map.nxs force_overwrite: true # Integrate map detetcor data - reader.MultipleReader: readers: - YAMLReader: - filename: saxswaxs/map_1d.yaml + filename: examples/saxswaxs/map_1d.yaml schema: MapConfig - YAMLReader: - filename: saxswaxs/integration_saxs_azimuthal.yaml + filename: examples/saxswaxs/integration_saxs_azimuthal.yaml schema: IntegrationConfig - processor.IntegrateMapProcessor - writer.NexusWriter: - filename: saxswaxs/saxs_azimuthal_integrated.nxs + filename: examples/saxswaxs/saxs_azimuthal_integrated.nxs force_overwrite: true diff --git a/sin2psi_config/integration.yaml b/examples/sin2psi/integration.yaml similarity index 75% rename from sin2psi_config/integration.yaml rename to examples/sin2psi/integration.yaml index e8ada05..e2abd73 100644 --- a/sin2psi_config/integration.yaml +++ b/examples/sin2psi/integration.yaml @@ -3,8 +3,8 @@ title: saxs_azimuthal integration_type: azimuthal detectors: - prefix: EIG500 - poni_file: sin2psi_data/EIG500.poni - mask_file: sin2psi_data/EIG500.tif + poni_file: examples/sin2psi/EIG500.poni + mask_file: examples/sin2psi/EIG500.tif radial_units: q_A^-1 radial_min: 11.5 radial_max: 17.0 diff --git a/sin2psi_config/map.yaml b/examples/sin2psi/map.yaml similarity index 91% rename from sin2psi_config/map.yaml rename to examples/sin2psi/map.yaml index 67932a5..7129431 100644 --- a/sin2psi_config/map.yaml +++ b/examples/sin2psi/map.yaml @@ -4,7 +4,7 @@ experiment_type: SAXSWAXS sample: name: Ti_1_A-2 spec_scans: -- spec_file: sin2psi_data/Ti_1_A-2/spec.log +- spec_file: examples/sin2psi/Ti_1_A-2/spec.log scan_numbers: [1,2,16,17] independent_dimensions: - label: samx diff --git a/sin2psi_config/pipeline.yaml b/examples/sin2psi/pipeline.yaml similarity index 60% rename from sin2psi_config/pipeline.yaml rename to examples/sin2psi/pipeline.yaml index 71431b4..ed3f2e2 100644 --- a/sin2psi_config/pipeline.yaml +++ b/examples/sin2psi/pipeline.yaml @@ -2,37 +2,37 @@ pipeline: # Collect map data - reader.YAMLReader: - filename: sin2psi_config/map.yaml + filename: examples/sin2psi/map.yaml schema: MapConfig - processor.MapProcessor - writer.NexusWriter: - filename: sin2psi_data/map.nxs + filename: examples/sin2psi/map.nxs force_overwrite: true # Integrate map detector data - reader.MultipleReader: readers: - YAMLReader: - filename: sin2psi_config/map.yaml + filename: examples/sin2psi/map.yaml schema: MapConfig - YAMLReader: - filename: sin2psi_config/integration.yaml + filename: examples/sin2psi/integration.yaml schema: IntegrationConfig - processor.IntegrateMapProcessor - writer.NexusWriter: - filename: sin2psi_data/integrated_detector_data.nxs + filename: examples/sin2psi/integrated_detector_data.nxs force_overwrite: true # Compute sample strain map - reader.MultipleReader: readers: - NexusReader: - filename: sin2psi_data/integrated_detector_data.nxs + filename: examples/sin2psi/integrated_detector_data.nxs - YAMLReader: - filename: sin2psi_config/strain_analysis_config.yaml + filename: examples/sin2psi/strain_analysis_config.yaml schema: StrainAnalysisConfig - processor.StrainAnalysisProcessor - writer.YAMLWriter: - filename: sin2psi_data/sample_strain_data.yaml + filename: examples/sin2psi/sample_strain_data.yaml force_overwrite: true diff --git a/sin2psi_config/strain_analysis_config.yaml b/examples/sin2psi/strain_analysis_config.yaml similarity index 100% rename from sin2psi_config/strain_analysis_config.yaml rename to examples/sin2psi/strain_analysis_config.yaml diff --git a/scripts/CHAP b/scripts/CHAP new file mode 100755 index 0000000..d6bcffb --- /dev/null +++ b/scripts/CHAP @@ -0,0 +1,3 @@ +#!/bin/bash + +python -m CHAP "$@" diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..bbebaa2 --- /dev/null +++ b/setup.py @@ -0,0 +1,55 @@ +""" +Standard python setup.py file +to build : python setup.py build +to install : python setup.py install --prefix= +to clean : python setup.py clean +to build doc : python setup.py doc +to run tests : python setup.py test +""" + +import os +import setuptools + +def datafiles(idir, pattern=None): + """Return list of data files in provided relative dir""" + files = [] + for dirname, dirnames, filenames in os.walk(idir): + for subdirname in dirnames: + files.append(os.path.join(dirname, subdirname)) + for filename in filenames: + if filename[-1] == '~': + continue + # match file name pattern (e.g. *.css) if one given + if pattern and not fnmatch.fnmatch(filename, pattern): + continue + files.append(os.path.join(dirname, filename)) + return files + +data_files = datafiles('examples') + +with open("README.md", "r") as fh: + long_description = fh.read() + +setuptools.setup( + name="ChessAnalysisPipeline", + version="0.0.1", + author="Keara Soloway, Rolf Verberg, Valentin Kuznetsov", + author_email="", + description="CHESS analysis pipeline framework", + long_description=long_description, + long_description_content_type="text/markdown", + url="https://github.com/CHESSComputing/ChessAnalysisPipeline", + packages=['CHAP', 'MLaaS'], + package_dir={'CHAP': 'CHAP', 'MLaaS': 'MLaaS'}, + package_data={'examples': data_files}, + scripts=['scripts/CHAP'], + classifiers=[ + "Programming Language :: Python :: 3", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", + ], + python_requires='>=3.8', + install_requires=[ + 'PyYAML' + ], +) diff --git a/test-config.yaml b/test-config.yaml deleted file mode 100644 index 422c60d..0000000 --- a/test-config.yaml +++ /dev/null @@ -1,10 +0,0 @@ -pipeline: - - reader.Reader: - filename: data.csv - - processor.Processor: {} - - processor.Processor: {} - - writer.Writer: - filename: data.out - - processor.Processor: {} - - writer.Writer: - filename: data.out