Skip to content
Snippets Groups Projects
Commit 88fecd34 authored by David Sehnal's avatar David Sehnal
Browse files

started symmetry

parent d517c873
No related branches found
No related tags found
No related merge requests found
...@@ -7,5 +7,6 @@ ...@@ -7,5 +7,6 @@
import Model from './model/model' import Model from './model/model'
import * as Types from './model/types' import * as Types from './model/types'
import Format from './model/format' import Format from './model/format'
import Symmetry from './model/properties/symmetry'
export { Model, Types, Format } export { Model, Types, Format, Symmetry }
\ No newline at end of file \ No newline at end of file
...@@ -11,6 +11,7 @@ import Format from '../format' ...@@ -11,6 +11,7 @@ import Format from '../format'
import Model from '../model' import Model from '../model'
import * as Hierarchy from '../properties/hierarchy' import * as Hierarchy from '../properties/hierarchy'
import Conformation from '../properties/conformation' import Conformation from '../properties/conformation'
import Symmetry from '../properties/symmetry'
import findHierarchyKeys from '../utils/hierarchy-keys' import findHierarchyKeys from '../utils/hierarchy-keys'
import { ElementSymbol} from '../types' import { ElementSymbol} from '../types'
...@@ -76,6 +77,10 @@ function getConformation({ data }: mmCIF_Format, bounds: Interval): Conformation ...@@ -76,6 +77,10 @@ function getConformation({ data }: mmCIF_Format, bounds: Interval): Conformation
} }
} }
function getSymmetry({ data }: mmCIF_Format): Symmetry {
return Symmetry.Empty;
}
function isHierarchyDataEqual(a: Hierarchy.Hierarchy, b: Hierarchy.Data) { function isHierarchyDataEqual(a: Hierarchy.Hierarchy, b: Hierarchy.Data) {
// need to cast because of how TS handles type resolution for interfaces https://github.com/Microsoft/TypeScript/issues/15300 // need to cast because of how TS handles type resolution for interfaces https://github.com/Microsoft/TypeScript/issues/15300
return Table.areEqual(a.chains as Table<Hierarchy.ChainsSchema>, b.chains as Table<Hierarchy.ChainsSchema>) return Table.areEqual(a.chains as Table<Hierarchy.ChainsSchema>, b.chains as Table<Hierarchy.ChainsSchema>)
...@@ -105,6 +110,7 @@ function createModel(format: mmCIF_Format, bounds: Interval, previous?: Model): ...@@ -105,6 +110,7 @@ function createModel(format: mmCIF_Format, bounds: Interval, previous?: Model):
modelNum: format.data.atom_site.pdbx_PDB_model_num.value(Interval.start(bounds)), modelNum: format.data.atom_site.pdbx_PDB_model_num.value(Interval.start(bounds)),
hierarchy: { ...hierarchyData, ...hierarchyKeys, ...hierarchySegments }, hierarchy: { ...hierarchyData, ...hierarchyKeys, ...hierarchySegments },
conformation: getConformation(format, bounds), conformation: getConformation(format, bounds),
symmetry: getSymmetry(format),
atomCount: Interval.size(bounds) atomCount: Interval.size(bounds)
}; };
} }
......
...@@ -6,8 +6,9 @@ ...@@ -6,8 +6,9 @@
import UUID from 'mol-util/uuid' import UUID from 'mol-util/uuid'
import Format from './format' import Format from './format'
import HierarchyProperties from './properties/hierarchy' import Hierarchy from './properties/hierarchy'
import ConformationProperties from './properties/conformation' import Conformation from './properties/conformation'
import Symmetry from './properties/symmetry'
import from_mmCIF from './formats/mmcif' import from_mmCIF from './formats/mmcif'
...@@ -23,8 +24,9 @@ interface Model extends Readonly<{ ...@@ -23,8 +24,9 @@ interface Model extends Readonly<{
sourceData: Format, sourceData: Format,
hierarchy: HierarchyProperties, hierarchy: Hierarchy,
conformation: ConformationProperties, conformation: Conformation,
symmetry: Symmetry,
atomCount: number atomCount: number
}> { } }> { }
......
/**
* Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author David Sehnal <david.sehnal@gmail.com>
*/
import SymmetryOperator from 'mol-math/geometry/symmetry-operator'
import { Query } from '../../query'
import { Model } from '../../model'
export interface OperatorGroup {
readonly query: Query,
readonly operators: ReadonlyArray<SymmetryOperator>
}
export type OperatorGroups = ReadonlyArray<ReadonlyArray<OperatorGroup>>
export class Assembly {
readonly id: string;
readonly details: string;
private _operators: OperatorGroups;
get operators(): OperatorGroups {
if (this._operators) return this._operators;
this._operators = this.operatorsProvider();
return this._operators;
}
constructor(id: string, details: string, private operatorsProvider: () => OperatorGroups) {
this.id = id;
this.details = details;
}
}
export namespace Assembly {
export function create(id: string, details: string, operatorsProvider: () => OperatorGroups) {
return new Assembly(id, details, operatorsProvider);
}
}
interface Symmetry {
readonly assemblies: ReadonlyArray<Assembly>,
}
namespace Symmetry {
export const Empty: Symmetry = { assemblies: [] };
export function findAssembly(model: Model): Assembly | undefined {
return void 0;
}
}
export default Symmetry
\ No newline at end of file
/**
* Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author David Sehnal <david.sehnal@gmail.com>
*/
// TODO: symmetry and assebmlies descriptors
//import Column from 'mol-base/collections/column'
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment