diff --git a/backend/app/data/data.py b/backend/app/data/data.py index 616e261..ffdb068 100644 --- a/backend/app/data/data.py +++ b/backend/app/data/data.py @@ -407,9 +407,9 @@ beamtimes = [ ), Beamtime( id=2, - pgroups="p20002", + pgroups="p20003", shift="afternoon", - beamtime_name="p20001-test", + beamtime_name="p20003-test", beamline="X06DA", start_date=datetime.strptime("07.05.2025", "%d.%m.%Y").date(), end_date=datetime.strptime("08.05.2025", "%d.%m.%Y").date(), @@ -677,8 +677,15 @@ pucks = [ # Define samples samples = [] sample_id_counter = 1 +# Assign a beamtime to each dewar +dewar_to_beamtime = { + dewar.id: random.choice([1, 2]) for dewar in dewars # Or use actual beamtime ids +} for puck in pucks: + dewar_id = puck.dewar_id # Assuming puck has dewar_id + assigned_beamtime = dewar_to_beamtime[dewar_id] + positions_with_samples = random.randint(1, 16) occupied_positions = random.sample(range(1, 17), positions_with_samples) @@ -689,6 +696,7 @@ for puck in pucks: sample_name=f"Sample{sample_id_counter:03}", position=pos, puck_id=puck.id, + beamtime_id=assigned_beamtime, # IMPORTANT: Use the dewar's beamtime ) samples.append(sample) sample_id_counter += 1 diff --git a/backend/app/models.py b/backend/app/models.py index 7ebca2e..651708e 100644 --- a/backend/app/models.py +++ b/backend/app/models.py @@ -154,6 +154,10 @@ class Puck(Base): dewar = relationship("Dewar", back_populates="pucks") samples = relationship("Sample", back_populates="puck") events = relationship("PuckEvent", back_populates="puck") + beamtime_id = Column(Integer, ForeignKey("beamtimes.id"), nullable=True) + beamtime = relationship( + "Beamtime", back_populates="pucks", foreign_keys=[beamtime_id] + ) class Sample(Base): @@ -173,6 +177,8 @@ class Sample(Base): puck = relationship("Puck", back_populates="samples") events = relationship("SampleEvent", back_populates="sample", lazy="joined") images = relationship("Image", back_populates="sample", lazy="joined") + beamtime_id = Column(Integer, ForeignKey("beamtimes.id"), nullable=True) + beamtime = relationship("Beamtime", back_populates="samples") @property def mount_count(self) -> int: @@ -256,6 +262,8 @@ class Beamtime(Base): local_contact = relationship("LocalContact") dewars = relationship("Dewar", back_populates="beamtime") + pucks = relationship("Puck", back_populates="beamtime") + samples = relationship("Sample", back_populates="beamtime") class Image(Base): diff --git a/backend/app/routers/beamtime.py b/backend/app/routers/beamtime.py index c077ea5..07d0eae 100644 --- a/backend/app/routers/beamtime.py +++ b/backend/app/routers/beamtime.py @@ -1,9 +1,14 @@ from fastapi import APIRouter, HTTPException, status, Depends -from sqlalchemy.orm import Session +from sqlalchemy.orm import Session, joinedload from sqlalchemy import or_ from app.models import Beamtime as BeamtimeModel -from app.schemas import Beamtime as BeamtimeSchema, BeamtimeCreate, loginData +from app.schemas import ( + Beamtime as BeamtimeSchema, + BeamtimeCreate, + loginData, + BeamtimeResponse, +) from app.dependencies import get_db from app.routers.auth import get_current_user @@ -60,7 +65,7 @@ async def create_beamtime( @beamtime_router.get( "/my-beamtimes", - response_model=list[BeamtimeSchema], + response_model=list[BeamtimeResponse], ) async def get_my_beamtimes( db: Session = Depends(get_db), @@ -68,5 +73,10 @@ async def get_my_beamtimes( ): user_pgroups = current_user.pgroups filters = [BeamtimeModel.pgroups.like(f"%{pgroup}%") for pgroup in user_pgroups] - beamtimes = db.query(BeamtimeModel).filter(or_(*filters)).all() + beamtimes = ( + db.query(BeamtimeModel) + .options(joinedload(BeamtimeModel.local_contact)) + .filter(or_(*filters)) + .all() + ) return beamtimes diff --git a/backend/app/routers/sample.py b/backend/app/routers/sample.py index f2c31b6..b76bcee 100644 --- a/backend/app/routers/sample.py +++ b/backend/app/routers/sample.py @@ -425,6 +425,7 @@ def create_result(payload: ResultCreate, db: Session = Depends(get_db)): result_entry = ResultsModel( sample_id=payload.sample_id, + status=payload.status, run_id=payload.run_id, result=payload.result.model_dump(), # Serialize entire result to JSON ) @@ -435,6 +436,7 @@ def create_result(payload: ResultCreate, db: Session = Depends(get_db)): return ResultResponse( id=result_entry.id, + status=result_entry.status, sample_id=result_entry.sample_id, run_id=result_entry.run_id, result=payload.result, # return original payload directly diff --git a/backend/app/schemas.py b/backend/app/schemas.py index cc5ec72..14a8ffd 100644 --- a/backend/app/schemas.py +++ b/backend/app/schemas.py @@ -534,6 +534,7 @@ class PuckCreate(BaseModel): puck_type: str puck_location_in_dewar: int samples: List[SampleCreate] = [] + beamtime_id: Optional[int] = None class PuckUpdate(BaseModel): @@ -541,6 +542,7 @@ class PuckUpdate(BaseModel): puck_type: Optional[str] = None puck_location_in_dewar: Optional[int] = None dewar_id: Optional[int] = None + beamtime_id: Optional[int] = None class Puck(BaseModel): @@ -549,6 +551,7 @@ class Puck(BaseModel): puck_type: str puck_location_in_dewar: int dewar_id: int + beamtime_id: Optional[int] = None events: List[PuckEvent] = [] samples: List[Sample] = [] @@ -800,6 +803,24 @@ class BeamtimeCreate(BaseModel): local_contact_id: Optional[int] +class BeamtimeResponse(BaseModel): + id: int + pgroups: str + shift: str + beamtime_name: str + beamline: str + start_date: date + end_date: date + status: str + comments: Optional[str] = None + proposal_id: Optional[int] + local_contact_id: Optional[int] + local_contact: Optional[LocalContact] + + class Config: + from_attributes = True + + class ImageCreate(BaseModel): pgroup: str sample_id: int diff --git a/backend/main.py b/backend/main.py index 328c368..caf1b7d 100644 --- a/backend/main.py +++ b/backend/main.py @@ -168,8 +168,8 @@ async def lifespan(app: FastAPI): load_slots_data(db) else: # dev or test environments print(f"{environment.capitalize()} environment: Regenerating database.") - # Base.metadata.drop_all(bind=engine) - # Base.metadata.create_all(bind=engine) + Base.metadata.drop_all(bind=engine) + Base.metadata.create_all(bind=engine) # from sqlalchemy.engine import reflection # from app.models import ExperimentParameters # adjust the import as needed # inspector = reflection.Inspector.from_engine(engine) diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index bae4f15..447a599 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -12,6 +12,7 @@ import AddressManager from './pages/AddressManagerView'; import ContactsManager from './pages/ContactsManagerView'; import LoginView from './pages/LoginView'; import ProtectedRoute from './components/ProtectedRoute'; +import BeamtimeOverview from './components/BeamtimeOverview'; const App: React.FC = () => { const [openAddressManager, setOpenAddressManager] = useState(false); @@ -84,7 +85,12 @@ const App: React.FC = () => { } />} /> } />} /> } />} /> - } />} /> + } />} /> + } />} /> + } />}/> + {/* Optionally, add a 404 fallback route */} + Page not found} /> + diff --git a/frontend/src/components/BeamtimeOverview.tsx b/frontend/src/components/BeamtimeOverview.tsx new file mode 100644 index 0000000..b1032dc --- /dev/null +++ b/frontend/src/components/BeamtimeOverview.tsx @@ -0,0 +1,138 @@ +import React, { useEffect, useState } from 'react'; +import { DataGridPremium, GridColDef } from '@mui/x-data-grid-premium'; +import { useNavigate } from 'react-router-dom'; // For navigation +import { BeamtimesService } from '../../openapi'; +import { Chip, Typography } from '@mui/material'; + +interface BeamtimeRecord { + id: number; + start_date: string; + end_date: string; + shift: string; + beamline: string; + local_contact: string; + pgroups: string; +} + +interface BeamtimeOverviewProps { + activePgroup: string; +} + +const BeamtimeOverview: React.FC = ({ activePgroup }) => { + const [rows, setRows] = useState([]); + const [isLoading, setIsLoading] = useState(false); + + // For navigation + const navigate = useNavigate(); + + const renderPgroupChips = (pgroups: string, activePgroup: string) => { + // Safely handle pgroups as an array + const pgroupsArray = pgroups.split(",").map((pgroup: string) => pgroup.trim()); + + if (!pgroupsArray.length) { + return No associated pgroups; + } + + return pgroupsArray.map((pgroup: string) => ( + + )); + }; + + // Fetch beamtime records from the backend + const fetchBeamtimeRecords = async () => { + try { + setIsLoading(true); + const records = await BeamtimesService.getMyBeamtimesProtectedBeamtimesMyBeamtimesGet(activePgroup); + + const mappedRecords: BeamtimeRecord[] = records.map((record: any) => ({ + id: record.id, + start_date: record.start_date || 'N/A', + end_date: record.end_date || 'N/A', + shift: record.shift || 'N/A', + beamline: record.beamline || 'N/A', + local_contact: `${record.local_contact.firstname || "N/A"} ${record.local_contact.lastname || "N/A"}`, + pgroups: record.pgroups || '', + })); + + setRows(mappedRecords); + } catch (error) { + console.error('Failed to fetch beamtime records:', error); + } finally { + setIsLoading(false); + } + }; + + useEffect(() => { + fetchBeamtimeRecords(); + }, [activePgroup]); + + // Define table columns, including the "View Results" button + const columns: GridColDef[] = [ + { field: 'start_date', headerName: 'Start Date', flex: 1 }, + { field: 'end_date', headerName: 'End Date', flex: 1 }, + { field: 'shift', headerName: "Shift", flex: 1 }, + { field: 'beamline', headerName: 'Beamline', flex: 1 }, + { field: 'local_contact', headerName: 'Local Contact', flex: 1 }, + { + field: 'pgroups', + headerName: 'Pgroups', + flex: 2, // Slightly wider column for chips + renderCell: (params) => renderPgroupChips(params.row.pgroups, activePgroup), + }, + { + field: 'viewResults', + headerName: 'Actions', + flex: 1, + renderCell: (params) => ( + + ), + }, + ]; + + // Navigate to the ResultsView page for the selected beamtime + const handleViewResults = (beamtimeId: number) => { + navigate(`/results/${beamtimeId}`); // Pass the beamtimeId in the URL + }; + + return ( +
+

Beamtime Overview

+ +
+ ); +}; + +export default BeamtimeOverview; \ No newline at end of file diff --git a/frontend/src/pages/ResultsView.tsx b/frontend/src/pages/ResultsView.tsx index 5e52b59..46e1929 100644 --- a/frontend/src/pages/ResultsView.tsx +++ b/frontend/src/pages/ResultsView.tsx @@ -1,24 +1,24 @@ -// components/ResultView.tsx - import React from 'react'; +import { useParams } from 'react-router-dom'; import SampleTracker from '../components/SampleTracker'; import ResultGrid from '../components/ResultGrid'; -interface ResultsViewProps { - activePgroup: string; -} +interface ResultsViewProps {} -const ResultsView: React.FC = ({activePgroup -}) => { +const ResultsView: React.FC = () => { + // Get the selected beamtime ID from the URL + const { beamtimeId } = useParams(); return (

Results Page

- - -
+

Results for Beamtime ID: {beamtimeId}

+ {/* Use the beamtimeId to filter or query specific results */} + + + ); }; -export default ResultsView; \ No newline at end of file +export default ResultsView; diff --git a/testfunctions.ipynb b/testfunctions.ipynb index 8595a84..cbd0651 100644 --- a/testfunctions.ipynb +++ b/testfunctions.ipynb @@ -876,8 +876,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-05-02T13:49:50.890862Z", - "start_time": "2025-05-02T13:49:50.841161Z" + "end_time": "2025-05-05T14:38:32.418132Z", + "start_time": "2025-05-05T14:38:32.370685Z" } }, "cell_type": "code", @@ -894,7 +894,7 @@ "# Your actual sample and experiment IDs\n", "sample_id = sample_id # Replace with valid IDs\n", "status = \"successful\"\n", - "run_id = 1 # Replace with valid run_id\n", + "run_id = 2 # Replace with valid run_id\n", "\n", "# Function to generate list of CurvePoint (resolution, value pairs)\n", "def logarithmic_decay_curve(length, min_res=4.0, max_res=1.0, max_value=1.0, min_value=0.0, noise=0.005, decimals=3):\n", @@ -917,6 +917,7 @@ "# Create random Results payload\n", "results_data = Results(\n", " pipeline=\"autoproc\",\n", + " status=status,\n", " resolution=round(random.uniform(1.0, 4.0), 2),\n", " unit_cell=f\"{random.uniform(20, 120):.2f}, {random.uniform(20, 120):.2f}, \"\n", " f\"{random.uniform(20, 120):.2f}, {random.uniform(60, 120):.2f}, \"\n", @@ -935,13 +936,13 @@ " comments=\"Random auto-generated test entry\"\n", ")\n", "\n", - "payload = ResultCreate(sample_id=sample_id, run_id=run_id, result=results_data)\n", + "payload = ResultCreate(sample_id=sample_id, run_id=run_id, result=results_data, status=status)\n", "\n", "# correct serialization, passing exact required dict structure\n", "payload_dict = {\n", " \"sample_id\": sample_id,\n", - " \"status\": status,\n", " \"run_id\": run_id,\n", + " \"status\": status,\n", " \"result\": results_data.model_dump(),\n", "}\n", "\n", @@ -968,7 +969,7 @@ "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): localhost:8000\n", "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/urllib3/connectionpool.py:1103: InsecureRequestWarning: Unverified HTTPS request is being made to host 'localhost'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#tls-warnings\n", " warnings.warn(\n", - "DEBUG:urllib3.connectionpool:https://localhost:8000 \"POST /samples/processing-results HTTP/1.1\" 200 7192\n" + "DEBUG:urllib3.connectionpool:https://localhost:8000 \"POST /samples/processing-results HTTP/1.1\" 200 7213\n" ] }, { @@ -976,11 +977,11 @@ "output_type": "stream", "text": [ "API call successful:\n", - "ResultResponse(id=2, sample_id=204, run_id=6, result=Results(pipeline='autoproc', resolution=3.73, unit_cell='86.44, 99.53, 23.45, 111.04, 110.10, 115.31', spacegroup='P21212', rmerge=0.029, rmeas=0.052, isig=16.74, cc=[CurvePoint(resolution=3.991, value=1.0), CurvePoint(resolution=3.93, value=1.0), CurvePoint(resolution=3.926, value=0.995), CurvePoint(resolution=3.894, value=0.997), CurvePoint(resolution=3.774, value=1.0), CurvePoint(resolution=3.658, value=0.996), CurvePoint(resolution=3.656, value=1.0), CurvePoint(resolution=3.612, value=1.0), CurvePoint(resolution=3.612, value=1.0), CurvePoint(resolution=3.594, value=1.0), CurvePoint(resolution=3.59, value=1.0), CurvePoint(resolution=3.571, value=1.0), CurvePoint(resolution=3.57, value=0.995), CurvePoint(resolution=3.562, value=0.999), CurvePoint(resolution=3.495, value=0.999), CurvePoint(resolution=3.436, value=0.999), CurvePoint(resolution=3.389, value=1.0), CurvePoint(resolution=3.365, value=0.997), CurvePoint(resolution=3.291, value=0.999), CurvePoint(resolution=3.224, value=0.999), CurvePoint(resolution=3.215, value=0.999), CurvePoint(resolution=3.201, value=1.0), CurvePoint(resolution=3.188, value=0.999), CurvePoint(resolution=3.161, value=1.0), CurvePoint(resolution=3.121, value=0.996), CurvePoint(resolution=3.111, value=0.997), CurvePoint(resolution=3.016, value=1.0), CurvePoint(resolution=2.973, value=0.996), CurvePoint(resolution=2.969, value=0.998), CurvePoint(resolution=2.925, value=0.998), CurvePoint(resolution=2.925, value=0.998), CurvePoint(resolution=2.908, value=1.0), CurvePoint(resolution=2.896, value=0.998), CurvePoint(resolution=2.854, value=1.0), CurvePoint(resolution=2.843, value=1.0), CurvePoint(resolution=2.841, value=0.997), CurvePoint(resolution=2.84, value=0.999), CurvePoint(resolution=2.831, value=1.0), CurvePoint(resolution=2.777, value=1.0), CurvePoint(resolution=2.759, value=0.999), CurvePoint(resolution=2.757, value=1.0), CurvePoint(resolution=2.74, value=1.0), CurvePoint(resolution=2.723, value=1.0), CurvePoint(resolution=2.698, value=1.0), CurvePoint(resolution=2.689, value=0.998), CurvePoint(resolution=2.614, value=1.0), CurvePoint(resolution=2.569, value=0.997), CurvePoint(resolution=2.561, value=1.0), CurvePoint(resolution=2.547, value=1.0), CurvePoint(resolution=2.518, value=1.0), CurvePoint(resolution=2.506, value=0.996), CurvePoint(resolution=2.455, value=1.0), CurvePoint(resolution=2.446, value=0.996), CurvePoint(resolution=2.374, value=1.0), CurvePoint(resolution=2.365, value=0.999), CurvePoint(resolution=2.298, value=0.996), CurvePoint(resolution=2.287, value=1.0), CurvePoint(resolution=2.278, value=0.996), CurvePoint(resolution=2.278, value=1.0), CurvePoint(resolution=2.272, value=0.995), CurvePoint(resolution=2.211, value=1.0), CurvePoint(resolution=2.195, value=1.0), CurvePoint(resolution=2.165, value=1.0), CurvePoint(resolution=2.14, value=1.0), CurvePoint(resolution=2.108, value=1.0), CurvePoint(resolution=2.067, value=0.999), CurvePoint(resolution=2.021, value=0.996), CurvePoint(resolution=1.992, value=0.995), CurvePoint(resolution=1.947, value=0.995), CurvePoint(resolution=1.937, value=1.0), CurvePoint(resolution=1.904, value=0.995), CurvePoint(resolution=1.865, value=0.992), CurvePoint(resolution=1.8, value=0.992), CurvePoint(resolution=1.752, value=0.995), CurvePoint(resolution=1.751, value=0.989), CurvePoint(resolution=1.739, value=0.995), CurvePoint(resolution=1.716, value=0.993), CurvePoint(resolution=1.7, value=0.992), CurvePoint(resolution=1.659, value=0.988), CurvePoint(resolution=1.594, value=0.982), CurvePoint(resolution=1.586, value=0.984), CurvePoint(resolution=1.555, value=0.973), CurvePoint(resolution=1.555, value=0.979), CurvePoint(resolution=1.463, value=0.953), CurvePoint(resolution=1.442, value=0.943), CurvePoint(resolution=1.412, value=0.94), CurvePoint(resolution=1.407, value=0.935), CurvePoint(resolution=1.394, value=0.924), CurvePoint(resolution=1.377, value=0.923), CurvePoint(resolution=1.374, value=0.922), CurvePoint(resolution=1.358, value=0.905), CurvePoint(resolution=1.34, value=0.894), CurvePoint(resolution=1.319, value=0.879), CurvePoint(resolution=1.306, value=0.875), CurvePoint(resolution=1.257, value=0.817), CurvePoint(resolution=1.225, value=0.773), CurvePoint(resolution=1.141, value=0.608), CurvePoint(resolution=1.139, value=0.606), CurvePoint(resolution=1.059, value=0.322), CurvePoint(resolution=1.013, value=0.082)], cchalf=[CurvePoint(resolution=3.98, value=0.995), CurvePoint(resolution=3.98, value=1.0), CurvePoint(resolution=3.947, value=1.0), CurvePoint(resolution=3.837, value=1.0), CurvePoint(resolution=3.769, value=0.999), CurvePoint(resolution=3.757, value=1.0), CurvePoint(resolution=3.731, value=0.999), CurvePoint(resolution=3.723, value=1.0), CurvePoint(resolution=3.694, value=1.0), CurvePoint(resolution=3.685, value=0.995), CurvePoint(resolution=3.658, value=1.0), CurvePoint(resolution=3.643, value=1.0), CurvePoint(resolution=3.615, value=1.0), CurvePoint(resolution=3.522, value=0.999), CurvePoint(resolution=3.502, value=1.0), CurvePoint(resolution=3.491, value=0.998), CurvePoint(resolution=3.486, value=1.0), CurvePoint(resolution=3.474, value=1.0), CurvePoint(resolution=3.468, value=0.997), CurvePoint(resolution=3.464, value=1.0), CurvePoint(resolution=3.463, value=1.0), CurvePoint(resolution=3.43, value=1.0), CurvePoint(resolution=3.378, value=0.999), CurvePoint(resolution=3.297, value=0.998), CurvePoint(resolution=3.25, value=1.0), CurvePoint(resolution=3.244, value=1.0), CurvePoint(resolution=3.191, value=0.998), CurvePoint(resolution=3.188, value=0.998), CurvePoint(resolution=3.17, value=0.996), CurvePoint(resolution=3.158, value=0.995), CurvePoint(resolution=3.158, value=1.0), CurvePoint(resolution=3.145, value=0.996), CurvePoint(resolution=3.142, value=1.0), CurvePoint(resolution=3.122, value=0.996), CurvePoint(resolution=3.093, value=1.0), CurvePoint(resolution=3.089, value=0.995), CurvePoint(resolution=3.013, value=1.0), CurvePoint(resolution=2.975, value=1.0), CurvePoint(resolution=2.955, value=1.0), CurvePoint(resolution=2.813, value=0.999), CurvePoint(resolution=2.74, value=1.0), CurvePoint(resolution=2.723, value=0.997), CurvePoint(resolution=2.695, value=0.997), CurvePoint(resolution=2.692, value=0.995), CurvePoint(resolution=2.673, value=1.0), CurvePoint(resolution=2.645, value=0.997), CurvePoint(resolution=2.608, value=1.0), CurvePoint(resolution=2.582, value=1.0), CurvePoint(resolution=2.556, value=1.0), CurvePoint(resolution=2.457, value=1.0), CurvePoint(resolution=2.422, value=1.0), CurvePoint(resolution=2.408, value=0.998), CurvePoint(resolution=2.388, value=0.996), CurvePoint(resolution=2.377, value=0.996), CurvePoint(resolution=2.347, value=1.0), CurvePoint(resolution=2.325, value=0.998), CurvePoint(resolution=2.299, value=0.998), CurvePoint(resolution=2.275, value=0.998), CurvePoint(resolution=2.259, value=1.0), CurvePoint(resolution=2.242, value=0.995), CurvePoint(resolution=2.209, value=1.0), CurvePoint(resolution=2.186, value=1.0), CurvePoint(resolution=2.175, value=0.997), CurvePoint(resolution=2.165, value=0.999), CurvePoint(resolution=2.113, value=1.0), CurvePoint(resolution=2.041, value=1.0), CurvePoint(resolution=1.997, value=0.994), CurvePoint(resolution=1.993, value=1.0), CurvePoint(resolution=1.979, value=0.997), CurvePoint(resolution=1.972, value=0.995), CurvePoint(resolution=1.93, value=1.0), CurvePoint(resolution=1.884, value=1.0), CurvePoint(resolution=1.877, value=0.996), CurvePoint(resolution=1.869, value=0.998), CurvePoint(resolution=1.863, value=0.996), CurvePoint(resolution=1.861, value=1.0), CurvePoint(resolution=1.851, value=0.995), CurvePoint(resolution=1.825, value=0.997), CurvePoint(resolution=1.791, value=0.997), CurvePoint(resolution=1.757, value=0.995), CurvePoint(resolution=1.734, value=0.997), CurvePoint(resolution=1.675, value=0.987), CurvePoint(resolution=1.635, value=0.987), CurvePoint(resolution=1.606, value=0.979), CurvePoint(resolution=1.556, value=0.974), CurvePoint(resolution=1.53, value=0.972), CurvePoint(resolution=1.466, value=0.958), CurvePoint(resolution=1.443, value=0.945), CurvePoint(resolution=1.435, value=0.947), CurvePoint(resolution=1.409, value=0.936), CurvePoint(resolution=1.344, value=0.897), CurvePoint(resolution=1.305, value=0.873), CurvePoint(resolution=1.275, value=0.839), CurvePoint(resolution=1.194, value=0.729), CurvePoint(resolution=1.163, value=0.664), CurvePoint(resolution=1.149, value=0.625), CurvePoint(resolution=1.142, value=0.609), CurvePoint(resolution=1.116, value=0.54), CurvePoint(resolution=1.037, value=0.218), CurvePoint(resolution=1.027, value=0.164)], completeness=85.1, multiplicity=3.28, nobs=53636, total_refl=140858, unique_refl=24272, comments='Random auto-generated test entry'))\n" + "ResultResponse(id=5, status='successful', sample_id=277, run_id=2, result=Results(pipeline='autoproc', resolution=1.4, unit_cell='108.05, 108.47, 84.95, 78.67, 102.50, 78.68', spacegroup='P1', rmerge=0.033, rmeas=0.049, isig=3.77, cc=[CurvePoint(resolution=3.982, value=0.995), CurvePoint(resolution=3.944, value=0.998), CurvePoint(resolution=3.937, value=0.996), CurvePoint(resolution=3.87, value=0.999), CurvePoint(resolution=3.85, value=1.0), CurvePoint(resolution=3.841, value=1.0), CurvePoint(resolution=3.827, value=1.0), CurvePoint(resolution=3.775, value=1.0), CurvePoint(resolution=3.719, value=0.996), CurvePoint(resolution=3.718, value=0.998), CurvePoint(resolution=3.711, value=1.0), CurvePoint(resolution=3.688, value=0.998), CurvePoint(resolution=3.684, value=0.997), CurvePoint(resolution=3.679, value=0.998), CurvePoint(resolution=3.53, value=1.0), CurvePoint(resolution=3.518, value=0.999), CurvePoint(resolution=3.493, value=0.997), CurvePoint(resolution=3.456, value=1.0), CurvePoint(resolution=3.443, value=0.998), CurvePoint(resolution=3.416, value=1.0), CurvePoint(resolution=3.368, value=1.0), CurvePoint(resolution=3.334, value=1.0), CurvePoint(resolution=3.32, value=1.0), CurvePoint(resolution=3.287, value=1.0), CurvePoint(resolution=3.278, value=0.995), CurvePoint(resolution=3.26, value=0.999), CurvePoint(resolution=3.247, value=1.0), CurvePoint(resolution=3.225, value=0.995), CurvePoint(resolution=3.173, value=0.996), CurvePoint(resolution=3.17, value=0.998), CurvePoint(resolution=3.155, value=1.0), CurvePoint(resolution=3.019, value=1.0), CurvePoint(resolution=3.007, value=0.997), CurvePoint(resolution=3.005, value=1.0), CurvePoint(resolution=2.962, value=0.999), CurvePoint(resolution=2.954, value=1.0), CurvePoint(resolution=2.939, value=1.0), CurvePoint(resolution=2.935, value=1.0), CurvePoint(resolution=2.935, value=1.0), CurvePoint(resolution=2.93, value=1.0), CurvePoint(resolution=2.903, value=1.0), CurvePoint(resolution=2.889, value=0.997), CurvePoint(resolution=2.851, value=1.0), CurvePoint(resolution=2.721, value=1.0), CurvePoint(resolution=2.705, value=0.999), CurvePoint(resolution=2.671, value=0.997), CurvePoint(resolution=2.639, value=0.996), CurvePoint(resolution=2.536, value=1.0), CurvePoint(resolution=2.529, value=1.0), CurvePoint(resolution=2.509, value=1.0), CurvePoint(resolution=2.501, value=0.997), CurvePoint(resolution=2.485, value=0.998), CurvePoint(resolution=2.458, value=1.0), CurvePoint(resolution=2.454, value=1.0), CurvePoint(resolution=2.452, value=1.0), CurvePoint(resolution=2.438, value=0.998), CurvePoint(resolution=2.435, value=1.0), CurvePoint(resolution=2.402, value=1.0), CurvePoint(resolution=2.354, value=0.999), CurvePoint(resolution=2.345, value=1.0), CurvePoint(resolution=2.334, value=0.997), CurvePoint(resolution=2.331, value=1.0), CurvePoint(resolution=2.255, value=0.999), CurvePoint(resolution=2.229, value=1.0), CurvePoint(resolution=2.186, value=1.0), CurvePoint(resolution=2.128, value=1.0), CurvePoint(resolution=2.08, value=1.0), CurvePoint(resolution=2.004, value=0.999), CurvePoint(resolution=1.991, value=0.997), CurvePoint(resolution=1.981, value=0.997), CurvePoint(resolution=1.966, value=1.0), CurvePoint(resolution=1.951, value=0.996), CurvePoint(resolution=1.926, value=0.997), CurvePoint(resolution=1.915, value=0.996), CurvePoint(resolution=1.904, value=0.995), CurvePoint(resolution=1.889, value=0.994), CurvePoint(resolution=1.872, value=1.0), CurvePoint(resolution=1.825, value=0.995), CurvePoint(resolution=1.818, value=0.999), CurvePoint(resolution=1.811, value=0.991), CurvePoint(resolution=1.791, value=0.994), CurvePoint(resolution=1.722, value=0.992), CurvePoint(resolution=1.702, value=0.991), CurvePoint(resolution=1.696, value=0.993), CurvePoint(resolution=1.665, value=0.985), CurvePoint(resolution=1.648, value=0.987), CurvePoint(resolution=1.519, value=0.969), CurvePoint(resolution=1.467, value=0.954), CurvePoint(resolution=1.394, value=0.931), CurvePoint(resolution=1.365, value=0.914), CurvePoint(resolution=1.351, value=0.905), CurvePoint(resolution=1.338, value=0.895), CurvePoint(resolution=1.278, value=0.847), CurvePoint(resolution=1.233, value=0.79), CurvePoint(resolution=1.191, value=0.723), CurvePoint(resolution=1.187, value=0.715), CurvePoint(resolution=1.114, value=0.534), CurvePoint(resolution=1.107, value=0.514), CurvePoint(resolution=1.084, value=0.434), CurvePoint(resolution=1.038, value=0.229)], cchalf=[CurvePoint(resolution=3.994, value=0.999), CurvePoint(resolution=3.994, value=0.996), CurvePoint(resolution=3.986, value=1.0), CurvePoint(resolution=3.929, value=1.0), CurvePoint(resolution=3.926, value=1.0), CurvePoint(resolution=3.892, value=0.996), CurvePoint(resolution=3.797, value=1.0), CurvePoint(resolution=3.784, value=0.999), CurvePoint(resolution=3.7, value=0.998), CurvePoint(resolution=3.694, value=1.0), CurvePoint(resolution=3.66, value=0.998), CurvePoint(resolution=3.645, value=0.999), CurvePoint(resolution=3.601, value=1.0), CurvePoint(resolution=3.581, value=0.996), CurvePoint(resolution=3.555, value=1.0), CurvePoint(resolution=3.421, value=1.0), CurvePoint(resolution=3.421, value=1.0), CurvePoint(resolution=3.365, value=1.0), CurvePoint(resolution=3.339, value=0.999), CurvePoint(resolution=3.271, value=0.999), CurvePoint(resolution=3.261, value=1.0), CurvePoint(resolution=3.252, value=0.996), CurvePoint(resolution=3.22, value=0.995), CurvePoint(resolution=3.205, value=0.996), CurvePoint(resolution=3.179, value=0.999), CurvePoint(resolution=3.116, value=0.996), CurvePoint(resolution=3.073, value=0.998), CurvePoint(resolution=3.012, value=0.999), CurvePoint(resolution=2.999, value=0.999), CurvePoint(resolution=2.985, value=1.0), CurvePoint(resolution=2.98, value=1.0), CurvePoint(resolution=2.976, value=1.0), CurvePoint(resolution=2.927, value=0.996), CurvePoint(resolution=2.911, value=0.996), CurvePoint(resolution=2.855, value=1.0), CurvePoint(resolution=2.831, value=1.0), CurvePoint(resolution=2.827, value=1.0), CurvePoint(resolution=2.785, value=0.996), CurvePoint(resolution=2.778, value=0.999), CurvePoint(resolution=2.753, value=0.998), CurvePoint(resolution=2.716, value=1.0), CurvePoint(resolution=2.691, value=1.0), CurvePoint(resolution=2.677, value=0.995), CurvePoint(resolution=2.659, value=0.998), CurvePoint(resolution=2.646, value=1.0), CurvePoint(resolution=2.626, value=1.0), CurvePoint(resolution=2.532, value=0.996), CurvePoint(resolution=2.508, value=1.0), CurvePoint(resolution=2.507, value=0.999), CurvePoint(resolution=2.446, value=0.997), CurvePoint(resolution=2.439, value=0.997), CurvePoint(resolution=2.409, value=1.0), CurvePoint(resolution=2.404, value=0.995), CurvePoint(resolution=2.346, value=1.0), CurvePoint(resolution=2.332, value=1.0), CurvePoint(resolution=2.328, value=0.996), CurvePoint(resolution=2.309, value=0.996), CurvePoint(resolution=2.27, value=1.0), CurvePoint(resolution=2.193, value=0.997), CurvePoint(resolution=2.148, value=1.0), CurvePoint(resolution=2.143, value=1.0), CurvePoint(resolution=2.123, value=0.995), CurvePoint(resolution=2.109, value=1.0), CurvePoint(resolution=2.099, value=1.0), CurvePoint(resolution=2.051, value=1.0), CurvePoint(resolution=2.036, value=0.999), CurvePoint(resolution=2.035, value=0.995), CurvePoint(resolution=2.033, value=0.999), CurvePoint(resolution=1.996, value=1.0), CurvePoint(resolution=1.99, value=1.0), CurvePoint(resolution=1.988, value=1.0), CurvePoint(resolution=1.977, value=0.994), CurvePoint(resolution=1.934, value=0.997), CurvePoint(resolution=1.898, value=1.0), CurvePoint(resolution=1.856, value=0.994), CurvePoint(resolution=1.808, value=0.994), CurvePoint(resolution=1.755, value=0.993), CurvePoint(resolution=1.743, value=0.998), CurvePoint(resolution=1.735, value=0.991), CurvePoint(resolution=1.701, value=0.987), CurvePoint(resolution=1.687, value=0.992), CurvePoint(resolution=1.561, value=0.98), CurvePoint(resolution=1.538, value=0.975), CurvePoint(resolution=1.533, value=0.974), CurvePoint(resolution=1.456, value=0.956), CurvePoint(resolution=1.452, value=0.948), CurvePoint(resolution=1.419, value=0.938), CurvePoint(resolution=1.404, value=0.935), CurvePoint(resolution=1.371, value=0.919), CurvePoint(resolution=1.346, value=0.902), CurvePoint(resolution=1.315, value=0.876), CurvePoint(resolution=1.286, value=0.848), CurvePoint(resolution=1.266, value=0.833), CurvePoint(resolution=1.212, value=0.753), CurvePoint(resolution=1.21, value=0.75), CurvePoint(resolution=1.175, value=0.692), CurvePoint(resolution=1.172, value=0.678), CurvePoint(resolution=1.156, value=0.649), CurvePoint(resolution=1.147, value=0.625), CurvePoint(resolution=1.109, value=0.517)], completeness=97.29, multiplicity=5.3, nobs=189003, total_refl=140823, unique_refl=44561, comments='Random auto-generated test entry'))\n" ] } ], - "execution_count": 31 + "execution_count": 27 }, { "metadata": {