packages feed

cobot-io 0.1.2.5 → 0.1.2.6

raw patch · 3 files changed

+20/−16 lines, 3 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

ChangeLog.md view
@@ -2,6 +2,10 @@  ## [Unreleased] +## [0.1.2.6] - 2019-12-12+### Fixed+- Fixes for instance of `StructureModels` for `Mae` when working with structures without explicit chain names.+ ## [0.1.2.5] - 2019-12-24 ### Fixed - Possibility to have spaces in Fasta sequences.
cobot-io.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 0e861a80d499c39e6ac8b1c1cb2b2fbcb63c09cd506f31744cbba112b69d71c5+-- hash: 0f03c19b37ba0793d464c62245414745d11715571fb56535d09dedf96fc5f683  name:           cobot-io-version:        0.1.2.5+version:        0.1.2.6 synopsis:       Biological data file formats and IO description:    Please see the README on GitHub at <https://github.com/less-wrong/cobot-io#readme> category:       Bio
src/Bio/MAE.hs view
@@ -18,13 +18,14 @@                                          Model (..), Residue (..),                                          SecondaryStructure (..),                                          StructureModels (..))+import           Control.Monad          (join) import           Control.Monad.IO.Class (MonadIO, liftIO) import           Data.Attoparsec.Text   (parseOnly) import           Data.Bifunctor         (bimap, first) import           Data.Function          (on) import qualified Data.List              as L (find, groupBy, sortOn) import           Data.Map.Strict        (Map)-import qualified Data.Map.Strict        as M (fromList, lookup, member, (!))+import qualified Data.Map.Strict        as M (fromList, lookup, (!)) import           Data.Maybe             (catMaybes, fromJust) import           Data.Text              (Text) import qualified Data.Text              as T (head, init, last, null, pack,@@ -51,7 +52,7 @@       unsafeGetFromContentsMap m name i = unsafeFromMaeValue $ (m M.! name) !! i        getFromContentsMap :: FromMaeValue a => Map Text [MaeValue] -> Text -> Int -> Maybe a-      getFromContentsMap m name i = fromMaeValue $ (m M.! name) !! i+      getFromContentsMap m name i = join $ fromMaeValue . (!! i) <$> name `M.lookup` m        blockToModel :: Block -> Model       blockToModel Block{..} = Model (atomsTableToChains atomsTable) bonds@@ -94,19 +95,19 @@           atomsTableToChains :: Map Text [MaeValue] -> Vector Chain           atomsTableToChains m = V.fromList $ fmap groupToChain groupedByChains             where-              groupedByChains = toGroupsOn (unsafeGetFromContents @Text "s_m_chain_name") [0 .. numberOfAtoms - 1]+              groupedByChains = toGroupsOn (getFromContents defaultChainName "s_m_chain_name") [0 .. numberOfAtoms - 1] +              getFromContents :: FromMaeValue a => a -> Text -> Int -> a+              getFromContents def name ind = maybe def id $ getFromContentsMap m name ind+               unsafeGetFromContents :: FromMaeValue a => Text -> Int -> a               unsafeGetFromContents = unsafeGetFromContentsMap m -              getFromContents :: FromMaeValue a => Text -> Int -> Maybe a-              getFromContents = getFromContentsMap m-               groupToChain :: [Int] -> Chain               groupToChain []            = error "Group that is result of List.groupBy can't be empty."               groupToChain group@(h : _) = Chain name residues                 where-                  name = stripQuotes $ unsafeGetFromContents "s_m_chain_name" h+                  name = stripQuotes $ getFromContents defaultChainName "s_m_chain_name" h                    groupedByResidues = toGroupsOn by group                   residues          = V.fromList $ fmap groupToResidue groupedByResidues@@ -114,6 +115,9 @@                   by :: Int -> (Int, Text)                   by i = (unsafeGetFromContents "i_m_residue_number" i, unsafeGetFromContents "s_m_pdb_residue_name" i) +              defaultChainName :: Text+              defaultChainName = "A"+               groupToResidue :: [Int] -> Residue               groupToResidue []            = error "Group that is result of List.groupBy can't be empty."               groupToResidue group@(h : _) = Residue name atoms (V.fromList localBonds) secondary chemCompType@@ -140,16 +144,12 @@                                    (stripQuotes $ getFromContentsI "s_m_pdb_atom_name")                                    (elIndToElement M.! getFromContentsI "i_m_atomic_number")                                    coords-                                   (getFromContentsIWithDef 0 "i_m_formal_charge")-                                   (getFromContentsIWithDef 0 "r_m_pdb_tfactor")-                                   (getFromContentsIWithDef 0 "r_m_pdb_occupancy")+                                   (getFromContents 0 "i_m_formal_charge" i)+                                   (getFromContents 0 "r_m_pdb_tfactor" i)+                                   (getFromContents 0 "r_m_pdb_occupancy" i)                 where                   getFromContentsI :: FromMaeValue a => Text -> a                   getFromContentsI = flip unsafeGetFromContents i--                  getFromContentsIWithDef :: FromMaeValue a => a -> Text -> a-                  getFromContentsIWithDef def n | n `M.member` m = maybe def id $ getFromContents n i-                                                | otherwise      = def                    coords :: V3 Float                   coords = V3 (getFromContentsI "r_m_x_coord")